我使用以下內容并且它不斷回圈。當 $i 低于 10 時,為什么它不停止?
謝謝。
#! /bin/bash
#
n=10
nn=20
#
for (( i=$(($n $nn)) ; ! i<=10 ; i -=2 ))
do
echo $i
sleep 1
if [ $i -le 0 ]
then
exit 99
fi
done
#
echo "Done with the value of i which started at $(($n $nn)) is exited with i=$i"
uj5u.com熱心網友回復:
你應該簡單地使用>:
for (( i=$(($n $nn)) ; i > 10 ; i -=2 ))
或嘗試使用括號:
for (( i=$(($n $nn)) ; !( i <= 10 ) ; i -=2 ))
編輯:我誤讀了檔案(https://www.gnu.org/software/bash/manual/html_node/Shell-Arithmetic.html):邏輯和按位否定應該有效,但我認為<=優先級低于!.
uj5u.com熱心網友回復:
原因是因為! i總是小于十。!確實優先于比較運算子。運算子的優先順序列在man bash> 中ARITHMETIC EVALUATION。
! i <= 10測驗 的邏輯否定i是否小于或等于 10。對于i除零以外的所有值,當它為 1 時, 的邏輯否定i為零。所以它永遠是真的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363388.html
標籤:猛击
上一篇:當腳本位于shell的stdin上時,apt-get之后的shell腳本中的命令未正確執行
下一篇:L2范數的Matlab計算很慢
