shell命令的返回值(管道 巢狀)

2021-10-05 17:39:02 字數 1373 閱讀 6739

使用「$?」即可獲得緊隨的上一條命令的執行結果

eg:我的text1.sh:(根據引數來確定退出的返回值)

case $1 in

1) exit 1 ;;

2) exit 2 ;;

*) exit 0 ;;

esac

使用$可以獲得緊挨的上一條指令(如果是管道指令)的第n段的返回值。eg:我的1.sh:(標準輸出乙個2,以返回值為1退出)

#!/bin/bash

echo "2"

exit 1

我的test2.sh:(根據標準輸入來確定退出的返回值)

read a

case $a in

1) exit 1 ;;

2) exit 2 ;;

*) exit 0 ;;

esac

結果:

第一段是1.sh以1退出,然後將標準輸出2傳遞給test2.sh使其以2退出;

第二段是1.sh以1退出,然後使用sed指令將1.sh的標準輸出2轉變為1在輸入給test2.sh使其以1退出,其中sed指令成功執行,返回值為0。

仍使用$?,但是這裡只能獲取最外層命令的返回值。

對test2.sh稍加改造,使它在退出之前給乙個標準輸出

read a

case $a in

1) echo 1; exit 1 ;;

2) echo 2; exit 2 ;;

*) echo 0; exit 0 ;;

esac

結果:可以看到命令的返回值與預設相同,沒見巢狀對其存在影響。

之後將test1.sh進行修改以驗證是否是我們的設定使巢狀對返回值的影響被忽略:

case $1 in

1) echo 1 ;;

2) echo 2 ;;

*) echo 0 ;;

esac

結果:返回值都變為0,所以巢狀指令對最外層的命令返回值沒有影響。

ps,假如希望獲得巢狀內部的命令返回值,可以嘗試分步執行

shell 命令返回值 傳遞

方法一 注意cat命令外面的那個引號是反引號,鍵盤上數字1旁邊那個 desktop temp aaa cat 123 desktop temp echo aaa abc 方法二 desktop temp ccc cat 123 desktop temp echo ccc abc cat test3 ...

then 返回值的深層巢狀

在promise.then 裡面不停地return乙個新的promise,巢狀再巢狀,就這樣不知不覺給自己出了個題目,暈暈,覺得挺好玩地 感興趣地可以看一下 let p2 newpromise resolve,reject then value then r then r err error rea...

shell 返回值一

今天看同事寫的指令碼,發現其中用乙個函式為變數賦值,然後發現那個函式的return值並非是我所期望的值,於是查詢了一些資料,發現自己之前對return的理解大大的錯誤了。return命令會使得乙個函式返回return命令會返回乙個單一的數字引數,而這個數字引數 0 255 在呼叫這個函式的指令碼中是...