「abcdef」という内容を含むfile.txtというファイルがありますが、これを実行すると出力cat < file.txt
abcdefが表示されますが、これを実行するとecho < file.txt
出力は返されません。入力リダイレクトがechoでは機能しませんが、catでは機能しないのはなぜですか?
答え1
入力リダイレクトが動作しませんが、
echo
動作するのはなぜですかcat
?
このecho
コマンドは標準入力のようなものを受け入れないので、引数だけを受け入れますcat
。
からman cat
:
cat - ファイルをリンクして標準出力として印刷
要約
猫[オプション]...[ファイル]...
説明する
ファイルをリンクする標準入力、標準出力として。
からman echo
:
echo - テキスト 1 行を表示します。
要約
エコ[短いオプション]...[ひも]...
エコロングオプション
説明する
エコひも標準出力として。
(強調は私のもの)
答え2
リダイレクトの代わりに、次のようにecho
読み取ることができます。file.txt
echo "$(<file.txt)"
出力例:
abcdef