[:: неверный номер в скрипте bash - PullRequest
1 голос
/ 20 января 2012

Это мой bash-скрипт:

#!/usr/local/bin/bash -x

touch /usr/local/p
touch /usr/local/rec
DATA_FULL=`date +%Y.%m.%d.%H`
CHECK=`netstat -an | grep ESTAB | egrep '(13001|13002|13003|13004|13061|13099|16001|16002|16003|16004|16061|16099|18001|18002|18003|18004|18061|18099|20001|20002|20003|20004|20061|20099|13000|16000|18000|20000)' | awk '{ print $5 }' | sort -u | wc -l`
netstat -an | grep ESTAB | egrep '(13001|13002|13003|13004|13061|13099|16001|16002|16003|16004|16061|16099|18001|18002|18003|18004|18061|18099|20001|20002|20003|20004|20061|20099|13000|16000|18000|20000)' | awk '{ print $5 }' | sort -u | wc -l > /usr/local/www/p

STAT=`cat /usr/local/www/rec`
if [ "$CHECK" -gt "$STAT" ]; then
echo $CHECK"\n"$DATA_FULL > /usr/local/p
fi

Конечно, я запустил chmod +x script.sh и затем sh script.sh, затем я получаю следующее сообщение: [: : bad number.

Почему это происходит?

Ответы [ 4 ]

3 голосов
/ 20 января 2012

Запустите ваш скрипт, используя

sh -x script.sh

Он напечатает каждую строку, которую он выполняет, и вывод переменной.Запустите команду netstat и команду stat снаружи и проверьте.

1 голос
/ 20 января 2012

Если это целые числа, используйте этот синтаксис,

if [ "0$(echo $CHECK|tr -d ' ')" -gt "0$(echo $STAT|tr -d ' ')" ];

Простой взлом.Работает только если $ STAT всегда либо пустое, либо положительное число.

1 голос
/ 20 января 2012

Вы уверены, что и STAT, и CHECK - это числа, которые можно сравнить с -gt?

1 голос
/ 20 января 2012

вероятно ваш /usr/local/www/rec пуст. Попробуйте

STAT=`cat /usr/local/www/rec 2>/dev/null || echo 0`

возможно.

...