私はUNIXを初めて使用します。私はubuntuターミナルでこのコマンドを入力しました:
pwd | echo
Terminal(/home/fatemeh/Documents/Code/test
)にpwd
の出力が表示されることを期待していましたが、出力は1行の空行でした。 。
なぜこれが起こるのですか?
echo
は標準入力では何もしません。パラメータを解析するだけです。したがって、echo
を効果的に実行しているので、それ自体で1つの空の行が出力され、標準入力は破棄されます。
実装しようとしている動作を確認したい場合は、cat
などの標準入力を解析するように設計されたツールを使用してください。
$ pwd | cat
/home/username
本当にecho
を使用して現在の作業ディレクトリ(または別のコマンドの出力)を表示したい場合は、コマンド置換を使用してこれを行うことができます。
$ echo "Your Shell is currently working in '$(pwd)'."
Your Shell is currently working in '/home/username'.
他の回答で述べられているように、echo
はstdinから読み取らないため、pwd
の出力を出力しません。まだわからない場合に備えて、pwd
はそれ自体で出力を出力するため、目的の結果を得るには、単独で実行する必要があります。
$ pwd
/current/working/dir
これに本当にechoを使用したい場合は、 コマンド置換 を使用できます。これにより、コマンドの出力(pwd
)がパラメーターとしてecho
に渡されます。この例でも、pwd
は独自の...出力をstdoutに出力するため、これは必要ありません。
$ echo "$(pwd)"
/current/working/dir
echo
コマンドは標準入力から読み取るのではなく、書き込むように指示した内容を書き込みます。この場合、何も書くように指示しなかったので、印刷されたのは改行だけでした。 pwd | echo
は、echo
を実行するのと同じです。
パイプを使用する場合は、標準入力から読み取るコマンドを使用する必要があります(例:cat
):
$ pwd | cat
/path/to/current/directory
$