是否有一個比較bash中兩個函數的退出碼的優雅方法?例如Bash:比較兩個函數的退出碼
b()
{
local r=$(rand -M 2 -s $(($(date +%s) + $1)));
echo "b$1=$r";
return $r;
} # just random boolean
b1() { b 1; return $?; } # some boolean function
b2() { b 2; return $?; } # another boolean function (another seed)
我想用這樣的
if b1 == b2 ; then echo 'then'; else echo 'else'; fi
,但堅持了這個「不異或」實施
if ! b1 && ! b2 || (b1 && b2) ; then echo 'then'; else echo 'else'; fi
和口語更普遍,可以比較出算術兩個函數的代碼並在if語句中使用該比較?
只是爲了澄清,你期望這個代碼'b 1;返回$?;'做什麼?由於運行'b 1'的結果並沒有保存在變量中,你希望通過運行它來實現什麼?另外,你認爲'$?'的價值意味着什麼? – John1024
我期望b 1;返回$?;返回b 1的結果,即零或一,因爲$?是存儲上次執行的命令的退出代碼的變量。是的,我明白stdout和函數結果之間的區別; – Leonid
Shell函數沒有返回值;它們具有退出狀態,具有明確定義的語義:'0'表示成功,其他任何非零值表示失敗。 – chepner