這是我的腳本:bash腳本,檢查數值變量在範圍
#!/bin/bash
JOB_NUM=4
function checkJobNumber() {
if (($JOB_NUM < 1 || $JOB_NUM > 16)); then
echo "pass"
fi
}
...
checkJobNumber
...
當我嘗試啓動腳本中,我得到的消息:
./script.sh line 49: ((: < 1 || > 16 : syntax error: operand expected (error token is "< 1 || > 16 ")
(請注意在空間錯誤信息)
我真的不明白是什麼問題。如果我在命令行手動執行評估,它就可以工作。
此外,我嘗試了像if [[ "$JOB_NUM" -lt 1 -o "$JOB_NUM" gt 16 ]];
...不同的評價...仍然沒有成功。
看起來好像'JOB_NUM'可能在函數被調用時未被設置;但是,bash算術不需要'$'擴展。如果你寫了'((JOB_NUM <1 || JOB_NUM> 16))',即使變量未設置,它也會在語法上有效 - 在這種情況下,它將評估爲零。 – kojiro
如果我按照Mat的說法,在錯誤發生之前,我在輸出中得到字符串「Job number is:[]」。我仍然不明白我做錯了什麼。順便說一下,我的JOB_NUM = 4賦值最初是一個JOB_NUM = $ 1賦值(腳本的直接參數)。 – CaptainPhlegm
我還應該提到我的函數都在腳本之上,在調用函數之前我沒有對變量做任何事情。我只是不'複製代碼,因爲它太離題了。 – CaptainPhlegm