Ubuntu

請向我解釋這些文件如何相互連接

  • April 16, 2022

所以我這裡有兩個文件。第一個是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

引用自:https://unix.stackexchange.com/questions/699286