Использовать вывод команды bash (с pipe) в качестве параметра для другой команды
Я ищу способ использовать выходные данные команды (скажем, command1) в качестве аргумента для другой команды (скажем, command2).
Я столкнулся с этой проблемой при попыткеgrep
выходwho
команда, но с использованием шаблона, заданного другим набором команд (на самом делеtty
по трубопроводуsed
).
Еслиtty
дисплеи:
/dev/pts/5
А такжеwho
дисплеи:
root pts/4 2012-01-15 16:01 (xxxx)
root pts/5 2012-02-25 10:02 (yyyy)
root pts/2 2012-03-09 12:03 (zzzz)
Цель:Я хочу только строки (ы) относительно "PTS / 5", поэтому я пайпtty
вsed
следующее:
$ tty | sed 's/\/dev\///'
pts/5
Контрольная работа:Попытка следующей команды не работает:
$ who | grep $(echo $(tty) | sed 's/\/dev\///')"
Возможное решение:Я обнаружил, что следующее прекрасно работает:
$ eval "who | grep $(echo $(tty) | sed 's/\/dev\///')"
Но я уверен, что использованиеeval
можно было бы избежать.
В качестве последнего побочного узла: я заметил, что аргумент "-m"who
дает мне именно то, что я хочу (получить только строкуwho
это связано с текущим пользователем). Но мне все еще интересно, как я мог бы заставить эту комбинацию каналов и командного размещения работать ...