[英]Bash post increment aborts script execution
使用bash -e
運行:
round=0
((round++))
echo "Done"
不會顯示Done
。 為什么? 設置-e
時如何使用后增量?
請看一些例子:
round=0
((round++))
echo $?
round=1
((round-1))
echo $?
((0))
echo $?
在所有情況下$?
返回 1。
Bash
聯機幫助頁指出:
((表達))
表達式根據以下算術求值中描述的規則進行求值。 如果表達式的值非零,則返回狀態為 0; 否則返回狀態為 1。這完全等同於 let "expression"。
如果設置了-e
選項,則腳本將退出,因為:
-e
如果管道(可能由單個簡單命令組成)、列表或復合命令(參見上面的 SHELL GRAMMAR)以非零狀態退出,則立即退出。 ...
您可以通過為算術計算結果分配一個變量來避免終止:
set -e
round=0
dummy=$((round++))
echo "Done"
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.