2016-01-28 5 views
1

Я использую grep -c для подсчета появления фразы на завитке. В настоящее время ниже код возвращающее число 12.Если/Else curl command не работает

curl WEBSITEURL | grep -c "incident-title" 

Я хочу использовать это в одной строке, если/иначе команда Баш, которая говорит, что, если возникновение больше 0, то Printf или иначе Printf.

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

Он постоянно возвращается «Полностью Операционное» несмотря на то, что это должно быть правдой, как 12 больше 0.

Заранее спасибо за помощь.

ответ

1

Как вам кажется, нужен «один лайнер», вот та же идея, но встроена внутри блока if/else.

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

IHTH

3

> означает выходное перенаправление в оболочке. Если вы хотите сравнить числа в Баш, используйте расширение арифметической (и подстановки команд, чтобы захватить выход):

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 
1

В дополнение к тому, что при условии, что другие ответы, вот предложение. Попробуйте использовать логические операторы короткого замыкания && и ||. Вы можете сократить ваш код:

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

Это, однако, труднее читать по сравнению с несколькими линиями if...else...fi.

4

Не рассчитывайте количество строк, выводимых grep; просто проверьте, что его статус выхода равен 0, что указывает хотя бы на одно успешное совпадение.

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

The -q подавляет стандартный вывод, потому что вы не все равно, что матч, только то, что есть совпадение.

0

Спасибо всем за помощь. Я действительно ценю это. Я искал однострочный и ракетоносец, обеспечивающий однострочный лоток, который разрешил мою проблему.