Решено: Не получается отсеять символ с кодом 012 из stdin

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Решено: Не получается отсеять символ с кодом 012 из stdin

Сообщение nick87720z »

Делаю скрипт на bash, в котором надо выделить PID процесса. Собственно, строчка:

Код: Выделить всё

ps -C jack_netsource -o pid | grep -v PID | grep -v "\12"
................
if test -n {$NETSOURCE_PID}; then
        echo NETPID found
else
        echo NETPID not found
fi


Этот тест всегда выдает "NETPID found"
В файле перед последним grep только один символ, с кодом 10 (012, 0xA). В medit выглядит как новая строка. Код подсмотрел в hex-редакторе.
Последний элемент цепочки выдает ошибку: grep: Неверная ссылка назад
Если поставить "\012", ничего не выдает, но и не работает. В info сказано, что допускается от одной до трех цифр после черты.
grep -v '\n' — аналогично

P.S. Вместо echo NETPID found запланировано

Код: Выделить всё

kill -9 $NETSOURCE_PID
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Решено: Не получается отсеять символ с кодом 012 из stdin

Сообщение /dev/random »

o_O

pkill -x jack_netsource

или даже

killall jack_netsource

И всё. Вместо гигантского скрипта. Или, если нужно получить список PID'ов:

NETSOURCE_PID=$(pgrep -x jack_netsource)
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Решено: Не получается отсеять символ с кодом 012 из stdin

Сообщение nick87720z »

/dev/random писал(а):
16.03.2010 20:52
.....
pkill -x jack_netsource

или даже

killall jack_netsource
....

Это мы умеем :)
Задача в том, чтобы отсеять все PID из списка (с этим проблем не должно быть). Наверное, я слишком придираюсь, просто kill -9 без аргумента (вернее символ с кодом 012 ггггг.) выдает ошибку. Работает, но как-то неприлично :(
За pgrep спасибо, буду дальше копать.
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Решено: Не получается отсеять символ с кодом 012 из stdin

Сообщение nick87720z »

Покопал info coreutils, докопался до tr. Оказывается, это только последний 012 не удаляется, а вот строки объединяются. Ладно, черт с ними. Код облегчил, и ладно :)

Код: Выделить всё

pgrep -n -U `whoami` ......
Спасибо сказали:
nick87720z
Сообщения: 180
ОС: Gentoo / Calculate

Re: Решено: Не получается отсеять символ с кодом 012 из stdin

Сообщение nick87720z »

Похоже, это все-таки получается обычный EOL )))
В общем, нашел, как избавиться от этого символа в конце.
echo -n <template> убирает последний символ, а printf вообще его не выводит.
http://www.opennet.ru/docs/RUS/bash_script...uide/c5358.html
:laugh:

З.Ы. Мануал для echo лучше смотреть не в man echo и не в info echo, а в info coreutils, раздел Printing text.
Оттуда я узнал, что коды символов могут быть не только восьмеричными ;)
Спасибо сказали: