Shell Script - [: -lt: ожидается унарный оператор - PullRequest
0 голосов
/ 15 мая 2018
#!/bin/bash
#ps -aux | grep abcd > /home/test1.txt
var= grep -o -i abcd /home/test1.txt | wc -l
threshold=15
if [ $var -lt $threshold ]; then
echo "One of the service is down on $HOSTNAME" >mail.txt
mailx -s "Application alert on $HOSTNAME" myname@domain.com <mail.txt
fi
if [ $var -eq $threshold ]; then
echo "All services are up and running fine on $HOSTNAME" >mail.txt
mailx -s "Application alert on $HOSTNAME" myname@domain.com <mail.txt
fi
exit;

Я получаю [: -lt: ожидается унарный оператор и [: -eq: ожидается унарный оператор при запуске цикла if. Может кто-нибудь помочь, пожалуйста, почему это происходит?

1 Ответ

0 голосов
/ 15 мая 2018

Отступ блоков кода внутри оператора if:

#!/bin/bash
var= grep -o -i abcd /home/test1.txt | wc -l
threshold=15
if [ "$var" -lt "$threshold" ]; then
    echo "One of the service is down on $HOSTNAME" >mail.txt
    mailx -s "Application alert on $HOSTNAME" myname@domain.com <mail.txt
fi
if [ "$var" -eq "$threshold" ]; then
    echo "All services are up and running fine on $HOSTNAME" >mail.txt
    mailx -s "Application alert on $HOSTNAME" myname@domain.com <mail.txt
fi
exit;

(или удалить эхо)

...