括號混亂
OP 從這個網站上發現了一個問題。
原因
請考慮以下程式碼段。
if 1==1 (
set /a result = 2*(3+4)
)
乍一看,你可能會認為 CMD.exe
會像這樣處理它:
- 條件為真,執行程式碼塊
- 將變數結果的值設定為
14
- 繼續
然而,CMD.exe
過程如下:
- 條件為真,執行程式碼塊
- 計算
2*(3+4
,在if
程式碼塊結束後處理 4 之後的)
- 一個隨機的
)
出現了!
第二步將返回 Unbalanced parentheses
錯誤。
解
根據德國 CMD.exe 的 set /?
,我們需要引用算術運算。這是一個例子。
以前 | 結果 |
---|---|
set /a result=2+5*4 |
set /a result="2+5*4" |
順便說一下,根據英文 CMD.exe set /?
,如果表示式中存在邏輯或模數運算子,則需要引號(儘管這不是必須執行的步驟)。