У меня странная проблема, связанная с grep -vзапросами. Позвольте мне объяснить:
Для отображения подключений я использую who:
$ who
harry pts/0 2016-12-08 20:41 (192.168.0.1)
james pts/1 2016-12-08 19:28 (192.168.0.1)
timothy pts/2 2016-12-08 02:44 (192.168.0.1)
Ток ttyмоего терминалаpts/0
$ tty
/dev/pts/0
$ tty | cut -f3-4 -d'/'
pts/0
Я пытаюсь исключить мою собственную связь, используя grep -v $(tty | cut -f3-4 -d'/'). Ожидаемый вывод этой команды должен быть whoбез моего подключения. Однако вывод наиболее неожиданный:
$ who | grep -v $(tty | cut -f3-4 -d'/')
grep: a: No such file or directory
grep: tty: No such file or directory
Я заключил $(...)в кавычки, и это, кажется, решить проблему "Нет такого файла или каталога". Тем не менее, мое соединение все еще печатается, хотя мой tty ( pts/0) должен был быть исключен:
$ who | grep -v "$(tty | cut -f3-4 -d'/')"
harry pts/0 2016-12-08 20:41 (192.168.0.1)
james pts/1 2016-12-08 19:28 (192.168.0.1)
timothy pts/2 2016-12-08 02:44 (192.168.0.1)
На данный момент я абсолютно не знаю, почему grepзапрос работает неправильно.
grep"не TTY". Как бы вы посоветовали мне обойти это?
set -xсначала ... Затем запустите свою команду и посмотрите, что вы на самом деле пытаетесьgrep...