Bash

如何使用美元?並測試檢查功能?

  • August 10, 2021
   #!/bin/sh

function checkExit(){
   if test "$?" != "0"; then
     echo Command $1 exited with abnormal status
     exit 1;
   else echo $?
   fi
}

function echoThenRun () { # echo and then run the command
 echo $1
 $1
 ret=$?
 echo $ret
 return $ret
}
file=test_file
echo > $file
echoThenRun "test -f $file"
checkExit $file
echo "all right!"

執行腳本的輸出:

$  ~/Downloads/test.sh 
test -f test_file
0
1 # why 1 here??
all right!

您正在做的事情有一種更簡單的方法。如果使用set -x,腳本將在執行前自動回顯每一行。

此外,一旦您執行另一個命令,$?將替換為該命令的退出程式碼。

如果您要對它做任何事情而不是快速測試和忘記,則必須將其備份到一個變數中。這[實際上是一個有自己的退出程式碼的程序。

例如:

set -x # make sure the command echos
execute some command...
result="$?"
set +x # undo command echoing
if [ "$result" -ne 0 ]; then
   echo "Your command exited with non-zero status $result"
fi

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