簡體   English   中英

If / Else curl命令不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM