在寫shell指令碼或是在shell環境裡面,經常需要把多條命令前後串起來執行。常見的幾種用法是:
;隔開各條命令,命令串起順序執行並互相不影響。即使其中某一條命令執行失敗,後面的命令也繼續執行。
經常在shell裡面敲多條命令,懶得一條一條地敲回車,就這麼寫。
| 隔開各條命令,|是shell裡面的管道操作符號(pipe operator)。前一條命令的結果,作為後一條命令的輸入。
管道操作符有時候可以幫助我們省很多事情,如下面的這組命令搜尋出所有的目錄,在把搜尋出來目錄的許可權設定為777.
find ./ -type d | xargs chmod 777
&& 和 ||因為是shell中的「與」和「或」操作,就放在一起說。使用它們最大的特點就是某條命令執行的結果(成功和失敗),能夠
影響到是否執行後續的命令。
它們的執行規則如下:
command1 && command2 && command3 && ...
從左到右執行,當前面的命令
執行「成功」後才繼續執行後面的命令。
command1 || command2 || command3 || ..
從左到右執行,當前面的命令
執行「失敗」後才繼續執行後面的命令。
命令執行成功是指其返回值等於0。 以date命令為例(之所以選擇date,是因為其返回值總是0),下面兩條語句是等價的,都會輸出"date: successed"
date && echo "date: successed"
date; ret_code=$? ; [ $ret_code = 0 ] && echo "date: successed"
上面的第二條語句取出了date命令的返回值並和0進行比較。當比較的結果為真時候。就接著執行後面的echo語句。
「||" 常見的一種用法是在makefile裡面,當需要進入到不同目錄裡面進行編譯,當其中乙個目錄中的編譯發生
錯誤的時候,就整個退出:
target:
for subdir in "dir1 dir2 dir3"; do \
make -c $$subdir || exit 1; \
done
shell執行命令的方式
想寫這篇文章還得從執行乙個指令碼說起 nohup sh run.sh 看到這樣執行指令碼的方式,剛開始有點不知所措,經過一番理解之後才發現這樣的執行方式考慮的真的很周全 用sh執行指令碼好處是不管指令碼有沒有執行許可權都可以被執行 不管相對路徑.run.sh還是絕對路徑執行 home sas cmn...
python的執行shell命令
os.system cat proc cpuinfo 返回的是執行的結果,1或者是其他 output os.popen cat proc cpuinfo print output.read 通過 os.popen 返回的是 file read 的物件,對其進行讀取 read 的操作可以看到執行的輸出...
shell 命令的執行 fork exec
shell命令分為 內建命令 外部命令 內建命令 builtin command 是shell解釋程式內建的,由shell直接執行,不需要派生新的程序。常見的內建命令 點命令 bg cd continue echo exec exit export fg jobs pwd read return s...