1. 程式人生 > >shell指令碼中順序執行另幾條shell命令

shell指令碼中順序執行另幾條shell命令

命令執行操作符

多條命令可以在一行中出現。它們可以從左到右順序執行。此時,各條命令之間應以分號( ;)隔開.
如:
   pwd ; who | wc -l ; cd /usr/bin

在相鄰命令間可存在邏輯關係,即邏輯“與”和邏輯“或”。

邏輯與操作符“&&”;
其一般形式:   命令1 && 命令2

其功能是先執行命令1,如果執行成功,才執行命令2;否則,若命令1執行不成功,則不執行命令2。
<例如>
     cat  abc&&pwd
邏輯或操作符“||”;
其一般形式是: 命令1 || 命令2

例如:
cat abc || pwd
如果不能將檔案abc的內容列出來,則顯示當前工作目錄的路徑。

在Shell中有兩種方式可以將若干命令組合在一起,使其在邏輯上被視為一條命令,它們是用花括號{ }將各命令括起來和用圓括號( )括起來。

以花括號括起來的全部命令可視為語法上的一條命令,出現在管道符的一邊。成組命令的執行順序是根據命令出現的先後次序,由左至右執行。在管道線中,成組命令把各命令的執行結果彙集在一起,形成一個輸出流,這個流作為該管道線中下一個命令的輸入。
例如,
{ echo "User Report for ` date ` . "; who ; } | pr
使用花括號時在格式上應注意:
左括號 “{ ”後面應有一個空格;右括號“}”之前應有一個分號( ;)。


成組命令也可以用圓括號括起來。
例如:
(echo "Current directory is ` pwd ` . "
cd /home/mengqc ; ls -l ;
cp m1 em1 && rm m1
cat em1) | pr
如上所示,在用圓括號括起成組命令時,左括號後不必有空格,右括號之前也不需加上分號。

二者執行過程相同,但是存在重要區別:用花括號括起來的成組命令只是在本Shell內執行命令表,不產生新的程序;而用圓括號括起來的成組命令是在新的子Shell內執行,要建立新的子程序。因此,在圓括號內的命令不會改變父Shell的變數值及工作目錄等。