Ubuntu
請向我解釋這些文件如何相互連接
所以我這裡有兩個文件。第一個是random.sh,即:
#!/usr/bin/env bash n=$(( RANDOM % 100 )) if [[ n -eq 42 ]]; then echo "Something went wrong" >&2 echo "The error was using magic numbers" exit 1 fi echo "Everything went according to plan"
第二個是debug.sh,即:
#!/usr/bin/env bash count=0 until [[ "$?" -ne 0 ]]; do count=$((count+1)) ./random.sh &> out.txt done echo "found error after $count runs" cat out.txt
當我執行命令 ./debug.sh 時,第一個文件將執行到 n = 42,然後第二個文件將列印文本。但我只是不明白為什麼
until [[ "$?" -ne 0 ]];
第二個程式碼中的程式碼,如何“$?” 如果沒有程式碼連接這些文件,可能是第一個文件退出的結果?
如果您閱讀
man bash
等,$?
從 shell 腳本執行的最後一個程序的返回碼。在您的情況下,這./random.sh
在循環內部,並且作為循環的一部分,在處理循環條件時until
每次呼叫後都會檢查返回程式碼。./random.sh