在Shell腳本中編寫健壯的if判斷邏輯,需要考慮以下幾點:
使用雙方括號[[ ]]
而不是單方括號[ ]
,因為雙方括號更加靈活,支持模式匹配和正則表達式。
在比較字符串時,使用雙引號""
將變量包裹起來,以防止空格或特殊字符導致的錯誤。
使用-z
和-n
檢查變量是否為空或非空。
使用-eq
、-ne
、-lt
、-le
、-gt
和-ge
進行數值比較,而不是使用==
、!=
、<
、<=
、>
和>=
,因為這些操作符在不同的Shell中可能有不同的行為。
使用&&
和||
連接多個條件,確保邏輯正確。
在if語句結束后使用fi
關鍵字。
下面是一個示例,展示了如何在Shell中編寫健壯的if判斷邏輯:
#!/bin/bash
num1=10
num2=20
str1="hello"
str2="world"
if [[ -n "$str1" && -n "$str2" ]]; then
if [[ "$num1" -lt "$num2" ]]; then
echo "Number comparison: $num1 is less than $num2"
fi
echo "String comparison: $str1 is not empty and $str2 is not empty"
else
echo "One or both of the strings are empty"
fi
這個示例首先檢查$str1
和$str2
是否非空,然后比較$num1
和$num2
的大小。如果$str1
和$str2
都非空,它將輸出兩條消息;否則,它將輸出一條消息,指示一個或兩個字符串為空。