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クエリが誤動作している理由はまったくわかりません。
@don_crisstiああ、なるほど。私は実際には
—
多分16
grep「ttyではない」と言っています。これを回避するにはどうすればいいですか?
set -x次に、あなたのコマンドを実行して、あなたが実際にしようとしているか見て...最初のgrep...