如果/ Else curl命令不起作用

时间:2016-01-28 23:22:37

标签: bash if-statement curl

我使用grep -c来计算curl上短语的出现次数。目前,以下代码返回12号。

B_oneloop = zeros(I,J);
for j=1:J
    B_oneloop(:,j) = A(:,j,index(j));
end

我想在一行中使用它,如果/ else bash命令说如果出现次数大于0则为printf或printf。

curl WEBSITEURL | grep -c "incident-title"

它不断回归"完全可操作"即使它应该是真的,因为12大于0.

提前感谢您的协助。

5 个答案:

答案 0 :(得分:4)

不计算grep输出的行数;只需检查其退出状态是否为0,表示至少有一次成功匹配。

if curl WEBSITEURL | grep -q "incident-title"; then
    printf "Investigating Issue"
else
    printf "Fully Operational"
fi

-q会抑制标准输出,因为您并不关心匹配是什么,只是存在匹配。

答案 1 :(得分:3)

>表示shell中的输出重定向。如果要比较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

答案 2 :(得分:1)

由于您似乎需要“一线”,这里有相同的想法,但嵌入在if/else块内。

if (( $( curl $WEBSITEURL | grep -c "incident-title" ) > 0 )) ; then printf "Investigating Issue"; else printf "Fully Operational"; fi

IHTH

答案 3 :(得分:1)

除了提供的其他答案之外,这里还有一个建议。尝试使用短路逻辑运算符&&||。您可以将代码缩短为:

(( $(curl WEBSITEURL | grep -c "incident-title") > 0 )) && printf 'Investigating Issue' || printf 'Fully Operational'

与多行if...else...fi相比,这更难阅读。

答案 4 :(得分:0)

谢谢大家的协助。我真的很感激。我正在寻找一个单线和贝壳提供解决我的问题的单线。