[英]If/Else curl command not working
我正在使用grep -c來計數在curl上一個短語的出現。 當前,下面的代碼返回數字12。
curl WEBSITEURL | grep -c "incident-title"
我想在if / else bash命令的單行中使用此命令,該命令說如果出現的次數大於0,則為printf,否則為printf。
if curl WEBSITEURL | grep -c "incident-title" > 0; then printf "Investigating Issue"; else printf "Fully Operational"; fi
它會繼續返回“完全運行”狀態,即使12為大於0時也應為true。
預先感謝您的協助。
不要計算grep
輸出的行數; 只需檢查其退出狀態是否為0(表示至少有一次成功匹配)即可。
if curl WEBSITEURL | grep -q "incident-title"; then
printf "Investigating Issue"
else
printf "Fully Operational"
fi
-q
禁止顯示標准輸出,因為您不關心匹配項是什么,只關心是否存在匹配項。
>
表示外殼中的輸出重定向。 如果要比較bash中的數字,請使用算術擴展(和命令替換來捕獲輸出):
if (( $(curl WEBSITEURL | grep -c "incident-title") > 0 )) ; then
如果不是一次性的事情,我會使用變量來提高可讀性
n=$(curl WEBSITEURL | grep -c "incident-title")
if (( n > 0 )) ; then
printf %s 'Investigating Issue'
else
printf %s 'Fully Operational'
fi
正如您似乎需要“單線”一樣,這是相同的想法,但是嵌入在if/else
塊內部。
if (( $( curl $WEBSITEURL | grep -c "incident-title" ) > 0 )) ; then printf "Investigating Issue"; else printf "Fully Operational"; fi
高溫超導
除了提供其他答案外,這里還有一個建議。 嘗試使用短路邏輯運算符&&
和||
。 您可以將代碼縮短為:
(( $(curl WEBSITEURL | grep -c "incident-title") > 0 )) && printf 'Investigating Issue' || printf 'Fully Operational'
但是,與多行if...else...fi
相比,這更難閱讀。
謝謝大家的協助。 我真的很感激。 我一直在尋找一種單線解決方案,而脫殼機提供的單線解決了我的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.