И это всё МОЁ

Добрый день!


Нарвался на статьи на Хабре, по Башу(по местным комментам я понял уже, что материал не ахти, но всё же). Есть там вот такой пример, «как вытащить первого пользователя из выдачи команды who» и записать в переменную:



logged_on=$(who | grep -i -m 1 $1 | awk ‘{print $1}’)



Как я не пытался выполнить этот код, всё тщетно. Во время выполнения ругается Grep:



Usage: grep [OPTION]… PATTERN [FILE]…



Понимаю, что проблема в том, что Grep’ом хотят вытащить первый элемент в первой строке, но Grep не умеет в ‘$0/$1/$2’ и т.д.


Статья на Хабре - есть перевод другой статьи, оригинала. Там эту задачу решают по-другому:



logged=$(who | awk -v IGNORECASE=1 -v usr=$1 ‘{ if ($1==usr) { print $1 }exit }’)



но в моём случае всё тоже тщетно, в переменную ничего не записывается. Почему? Определить не смог. Пробовал немного изменить код:



logged=$(who | awk ‘{BEGIN IGNORECASE=1; usr=$1} { if ($1==usr) { print $1 }exit }’)



но результат по прежнему нулевой.


Саму задачу я уже решил, совсем по другому, через костыль, но всё же хочу правильно всё понять и разобраться. Как решать задачу верно? Может у меня какой-то не сильно умный GREP, который не умеет в регулярные выражения, если я не спутал понятия конечно?









 , ,