簡體   English   中英

運行多個 bash 命令,如果其中之一在 bash 中失敗,則返回 false

[英]Run Multiple bash commands and return false if one of them fails in bash

我正在設置一個腳本,該腳本將執行一系列 bundle exec rspec 命令,如果其中任何一個失敗,我希望它返回 false。 但我仍然希望它運行所有測試。 沒有一堆 if 或 test 語句,有沒有更短的方法來完成這個?

我目前正在這樣做,但如果我能夠編寫一個 bash 函數來處理這個問題,我會用更好的語法更新答案:

#!/bin/sh
set +x

RETVAL=0

command1 || RETVAL=1
command2 || RETVAL=1
command3 || RETVAL=1

exit $RETVAL

在變量中跟蹤他們的退出代碼,然后退出。 我添加了行號以排除故障。

declare -i r_code=0    # return code
command1 || { r_code+=$?; echo "ERROR at $LINENO
}

command2 || { r_code+=$?; echo "ERROR at $LINENO
}

exit $r_code

這是一個 for 循環,它將遍歷所有返回代碼,如果一個失敗,將退出第一個看到的失敗返回代碼。

i=0
rc=0
command1 
rcode[i]=$?
i=i+1
command2
rcode[i]=$? ... n
for i in "${rcode}"
do
   if [ $i -ne 0 ]; then
      rc=$i
      break
   fi
done
exit $rc

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM