missing之bash腳本編寫-2

# 腳本的返回值或者運行結果

一般情況下,很多命令將一般信息打印到標準輸出(STDOUT),將錯誤打印到標準錯誤輸出(STDERR)。通常腳本會有返回碼,這樣就比較方便的控制和監控腳本運行情況。返回0代表運行成功,其他表示運行有錯誤,所以上節裏的常用變量*$?*就表示上個命令返回的返回碼。當然也可以直接在調用命令的地方,將腳本的返回值做一些二進制的運算,例子如下;

```bash

false || echo "Oops, fail"

# Oops, fail

true || echo "Will not be printed"

#

true && echo "Things went well"

# Things went well

false && echo "Will not be printed"

```

另外還有一種情況是將命令得到的結果作爲變量。把調用命令放到這個裏面,$( cmd ),即cmd的位置,等腳本運行的時候,命令運行的結果就會被替換到這個位置。舉個例子,比如這樣一句腳本:

```bash

for file in $(ls)

```

這條腳本會先運行ls命令,然後再遍歷所有通過ls找到的所有文件,再進行相關操作。

還有一個類似的祕術,即 *< (cmd)* ,他的做法是,先運行命令,然後將運行結果放到臨時文件,然後在剛纔cmd的位置上,將臨時文件的整個路徑將cmd替換掉。比如命令:``diff <(ls foo) <(ls bar)`` 將會顯示在foo,bar兩個命令下面文件的不同情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章