我使用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.
提前感谢您的协助。
答案 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)
谢谢大家的协助。我真的很感激。我正在寻找一个单线和贝壳提供解决我的问题的单线。