LINUX.ORG.RU

Не работает простой скрипт сравнения

 , , ,


0

1

Народ, помогите пожалуйста.
Я нифига не программист, уже два дня ковыряюсь и пытаюсь понять, что не так с моим простейшим скриптом. Но понимания не приходит, а скрпит всё не работает.

#!/bin/sh
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/bin:/sbin
x=$(ps aux | grep bin | awk 'END {print NR}')
echo "$x"
if $x > 0
then
echo ">0"
else
echo "=0"
fi
grep bin - взял условно, потом работать будет с другим условием.
Суть скрипта - подсчёт количества строк (процессов) в описании которых встречается текст «bin». Если строк больше нуля, то..., иначе.

Ответ на: комментарий от outsider

Отлично, спасибо огромное, работает!

KlgFinn
() автор топика

А не будет проще считать строки через wc? Т.е.:

ps aux | grep bin | wc -l

Ordy
()

Я нифига не программист, уже два дня ковыряюсь и пытаюсь понять, что не так с моим простейшим скриптом
#!/bin/sh
if $x > 0

Есть мнение, что из того, что вы «нифига не программист» не следует, что прежде, чем на новом языке что-то писать, его не стоит хотя бы начать учить.

Zmicier ★★★★★
()

Ну, либо всё писать на awk, либо писать правильно на баше.

$ x=$(ps aux | grep bin | wc -l)
$ echo "$x"
52
$ if [ $x -gt 42 ]; then echo "больше 42"; else echo "меньше/равно 42"; fi;
больше 42

justAmoment ★★★★★
()
Ответ на: комментарий от justAmoment

awk

$ x=$(ps aux | awk 'BEGIN {i=0;} /bin\// {i++;} END {print i; if (i>42) print "больше 42"; else print "меньше/равно 42";}')
$ echo "$x"
48
больше 42
justAmoment ★★★★★
()
Ответ на: комментарий от Zmicier

Зачем учить — открываешь man bash, ищешь в нём нужну инструкцию и едешь дальше. Но топиксратер даже мануал не открывал, видимо.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.