我是 bash 腳本新手,我不明白腳本的這個特定部分出了什麼問題。我試圖選擇我的腳本中的所有出口。並試圖設定條件,如果所有這些條件均未滿足,則其無效,否則其有效。
if [[ `echo $?` -ne {0..4} ]]
then
echo "Its a Valid Date."
else
echo " Not valid date."
fi
當我運行它時,我得到:
kpatel138@matrix:~/Lab2> ./cal2 1994 5 4
./cal2: line 40: unexpected argument `(' to conditional binary operator
./cal2: line 40: syntax error near `(0'
./cal2: line 40: `if [[ `echo $?` -ne (0..4) ]]'
答案1
`echo $?`
是一種複雜的寫作方式$?
。當有明顯更簡單的方法時,不要以複雜的方式做事。
我認為您想測試是否$?
是值 0、1、2、3 或 4 之一。您可以測試所有五個相等情況:
if [[ $? -eq 0 || $? -eq 1 || $? -eq 2 || $? -eq 3 || $? -eq 4 ]]; then …
但這過於冗長。由於您希望允許範圍為 0–4,因此請測試該值$?
是否大於最小值且小於最大值。
if [[ $? -ge 0 && $? -le 4 ]]; then …
$?
永遠不會是負面的,所以測試$? -ge 0
是多餘的。因此:
if [[ $? -le 4 ]]; then …
這也可以使用算術表達式來寫。請注意,運算子是不同的:括號中的條件結構使用-eq
、-ne
、-le
、-ge
和-lt
來-gt
比較整數,而算術表達式具有類似 C 的語法。
if (($? <= 4)); then …