簡體   English   中英

Bash 后增量中止腳本執行

[英]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.

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