0
我寫一個shell腳本和curl命令被存儲在一個變量是這樣的:檢查是否捲曲commnd的輸出爲空或不是在shell腳本
str="curl 'http...'"
,我估計這個使用
eval $ str
我想檢查這個輸出是否爲null,意味着它返回給我一些東西或不是。我該如何檢查? 爲什麼我不能將輸出存儲在如下變量中:
op = eval $ str 爲什麼這樣寫出錯誤? 在此先感謝
我寫一個shell腳本和curl命令被存儲在一個變量是這樣的:檢查是否捲曲commnd的輸出爲空或不是在shell腳本
str="curl 'http...'"
,我估計這個使用
eval $ str
我想檢查這個輸出是否爲null,意味着它返回給我一些東西或不是。我該如何檢查? 爲什麼我不能將輸出存儲在如下變量中:
op = eval $ str 爲什麼這樣寫出錯誤? 在此先感謝
使用命令替換:
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
在分配的陣列,單獨每論點作爲一個單一的元素。如果需要引用以將參數保留爲一個完整參數,則可以選擇任何引用方法,無論是使用單引號還是雙引號。
順便說一句,你只是有一個錯誤,因爲它不是正確的方式來調用一個你會得到輸出的命令。如上所述,您必須使用命令替換。稱爲過程替代的高級方法也可以適用,但對於要求並不實際。