shell腳本執行

shell腳本執行

對于我們這些小白而講,shell腳本無疑是最令人頭疼的事了,我再這里講一下shell腳本運行要注意的哪些。

shell腳本就好像c++,java代碼一樣,按照從上到下然后從左到右的順序執行。就像我們日常讀書一樣。如果shell命令遇見了子進程(嵌套代碼),程序就會跟著順序進入子進程。當子進程完成后,回到父進程,并且把父進程所需要的參數提交。

shell執行的方式

shell一共有4種執行方式

(1)bash file 或者 sh file 當腳本寫好以后,文件創建時默認是沒有執行的,運行腳本需要執行權限,所以直接運行就不行。要想執行就需要用這種方法。 示例:

shell腳本執行

當腳本開頭沒有解釋器的時候,這就可以用這種方法來執行。

(2)絕對路徑或者./ file 執行文件再當前目錄下執行,可以直接用./ file去執行這個文件。其中 . 代表的是父目錄,在這表現為相對路徑。如果執行文件不再該目錄下,那就使用絕對路徑。在這種方法執行文件的時候用戶必須附有該執行權限。

chmod +x file

這條命令可以給用戶加上執行權限。然后文件內容頭要有解釋器。

shell腳本執行

shell腳本執行

(3)可以用管道或者重定向的方法

sh<file 或者 file|sh

這種方法雖然感覺跟第一種方法一樣,但是好多時候可以用這種方法做到精簡代碼。

(4)source file 或者 . file ,如果腳本里面有嵌套,那么就會生成一個子進程。shell腳本中的各個代碼按順序執行,再執行時會創建一個進程。當語句中嵌套其他的有其他腳本,那么這些語句默認情況下會開啟一個子進程。而用這兩個命令不會打開子進程,它會直接在這個父進程中運行。所以這兩個命令可以將其嵌套程序的變量,返回值直接傳遞到父進程中使用。要注意的是. 后面一定要有空格。

pstree -p 查看進程

為了方便我們查看進程,我們在子腳本中設置休眠時間

sleep 設置休眠時間

shell腳本執行

用./3.log命令運行后車看子進程 

shell腳本執行

用source 3.log運行的結果

shell腳本執行

其中4.log是3.log的嵌套函數,由結果圖可以看出,該命令沒有開啟子進程

原創文章,作者:phosphor,如若轉載,請注明出處:http://www.www58058.com/77563

(2)
phosphorphosphor
上一篇 2017-06-05 19:36
下一篇 2017-06-05 22:47

相關推薦

  • 馬哥教育網絡班22期第二周課程練習1-未聞花名

    1、Linux管理文件和目錄的命令 命令 功能 命令 功能 pwd 顯示當前目錄 ls 查看目錄下的內容 cd 改變所在目錄 cat 顯示文件的內容 grep 在文件中查找某字符 cp 復制文件 touch 創建文件 mv 移動文件 rm 刪除文件 rmdir 刪除目錄 1.1 pwd命令 該命令的英文解釋為print working directory(打…

    Linux干貨 2016-08-22
  • rpm和yum的使用,程序包編譯安裝以及編譯apache過程中出現的問題

    一、rpm包管理          用法: rpm [選項…]              查詢/驗證軟件包選項:   &nbsp…

    Linux干貨 2016-03-19
  • 22期第五周課堂練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; [root@localhost ~]# grep "^[[:space:]]\+" /boot/grub/grub.conf 2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又…

    Linux干貨 2016-09-08
  • 網絡管理之配置靜態ip和多網卡綁定

    不知怎的,這幾天教室的網絡異常詭異,各種不穩定啊。原先小編都是通過自動獲?。╠hcp)的方式來進行網絡連接的,現在這種網絡情況下需要(static)的方式來配置一個固定的ip。步驟如下: 一、在終端中輸入:vim /etc/sysconfig/network-scripts/ifcfg-eth0 二、進行編輯并保存退出 三、重啟網絡服務:service ne…

    2017-09-10
  • 計劃任務

    作業管理: Linux的作業控制(job )     前臺作業:通過終端啟動,且啟動后一直占據終端;     后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端) 如何讓作業運行于后臺?     (1) 運行中的…

    Linux干貨 2016-09-08
欧美性久久久久