HI all,如何檢測shell中的空值?
我寫了這段代碼,但它沒有捕獲任何兩個變量爲null,爲什麼?
echo "$var1 - $var2"
if [ "$var1" == ""] || [ "$var2" == ""]
then
echo "Incomplete data"
exit 1
fi
當我運行我的腳本,所以if語句應該正常工作時,初始回顯爲變量打印什麼?但它不是因爲某種原因。
HI all,如何檢測shell中的空值?
我寫了這段代碼,但它沒有捕獲任何兩個變量爲null,爲什麼?
echo "$var1 - $var2"
if [ "$var1" == ""] || [ "$var2" == ""]
then
echo "Incomplete data"
exit 1
fi
當我運行我的腳本,所以if語句應該正常工作時,初始回顯爲變量打印什麼?但它不是因爲某種原因。
||
在shell中有不同的含義。另外==
不用於比較; =
是。也許你的意思是:
if [ -z "$var1" -o -z "$var2" ]
的手冊頁引用:
EXPRESSION1 -o EXPRESSION2 either EXPRESSION1 or EXPRESSION2 is true -z STRING the length of STRING is zero
謝謝,但這不是在這種情況下 – goe 2009-12-12 18:13:46
它看起來像你,因爲你正在使用==
和Bourne沒有寫一個bash腳本,如果我沒有記錯。
我明白你的問題是由於缺乏對括號前空間,但你應該讓你的if
這個樣子的:
if [[ "$var1" == "" || "$var2" == "" ]]
如果比它的執行速度更快沒有其他原因。但是,雙方括號也會向您購買additional capabilities。
您可以使用情況/ ESAC
case "$var1$var2" in "") echo "null";; esac
其實這個問題是存在的「」閉]之間沒有空格。哇! – goe 2009-12-12 18:13:13
你在寫什麼外殼? Bourne shell的便攜性還是Bash? – 2009-12-12 18:22:16