2013-09-23 70 views
0

我寫一個shell腳本和curl命令被存儲在一個變量是這樣的:檢查是否捲曲commnd的輸出爲空或不是在shell腳本

str="curl 'http...'" 

,我估計這個使用

eval $ str

我想檢查這個輸出是否爲null,意味着它返回給我一些東西或不是。我該如何檢查? 爲什麼我不能將輸出存儲在如下變量中:

op = eval $ str 爲什麼這樣寫出錯誤? 在此先感謝

回答

1

使用命令替換:

str="curl 'http...'" 
op=$(eval "$str") 
if [[ -n $op ]]; then 
    echo "Output is not null." 
else 
    echo "Output is null. 
fi 

一個更好的辦法實際上而不是使用eval,就是用數組作爲它的安全:

cmd=("curl" "http://...") 
op=$("${cmd[@]}") 
if [[ -n $op ]]; then 
    echo "Output is not null." 
else 
    echo "Output is null. 
fi 

在分配的陣列,單獨每論點作爲一個單一的元素。如果需要引用以將參數保留爲一個完整參數,則可以選擇任何引用方法,無論是使用單引號還是雙引號。

順便說一句,你只是有一個錯誤,因爲它不是正確的方式來調用一個你會得到輸出的命令。如上所述,您必須使用命令替換。稱爲過程替代的高級方法也可以適用,但對於要求並不實際。