我$對 bash 中的符號有點困惑。為什么代碼的第一行有效,而第二行給出錯誤?
echo $(($1 * 2))
echo (($1 * 2))
符號是否$像指標一樣作業?
為什么第一個 while 回圈不起作用,而第二個回圈不起作用?
#giving error
n=1
while [$n -le 5]
do
echo "Running $n time"
((n ))
done
#Not giving error
n=1
while [ $n -le 5 ]
do
echo "Running $n time"
(( n ))
done
uj5u.com熱心網友回復:
((...))只是評估并設定一個回傳碼。
$((...))也這樣做,但也用表示結果的字串替換自己。
n=1
while ((n<=5)); do echo "Running: $(( n )) time(s)"; done
Running: 1 time(s)
Running: 2 time(s)
Running: 3 time(s)
Running: 4 time(s)
Running: 5 time(s)
你的錯誤在這里 -
while [$n -le 5]
運算子周圍需要空格(或其他類似的澄清元字符)[,但((...))在更有限的語法通常不那么模棱兩可的地方不需要空格。將您的代碼粘貼到https://www.shellcheck.net/,它會在幾秒鐘內向您顯示類似的內容,并附有解釋。
cf此頁面了解更多資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/491434.html
下一篇:洗掉匹配模式后包含字串的行?
