如何選擇多個退出

如何選擇多個退出

我是 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 …

相關內容