考慮する:
$ FILE_NAME=`(cat somefile | head -1)` | tee -a dump.txt
$ echo $FILE_NAME
$
(cat somefile | head -1)
今tee..の出力がstdinに到達できないのはなぜですか?- 出力がteeに達すると、これをdump.txtファイルと標準出力にコピーできます。
- 変数
$FILE_NAME
も値を受け取りません。
答え1
あなたは文章を書きたいかもしれません
FILE_NAME=`(cat somefile | head -1) | tee -a dump.txt`
echo $FILE_NAME
(またはhead -1 somefile
猫を取り除く)
` 以外のパイプは論理エラーに近い。これは構文エラーだと思うかもしれませんが、Bashの仕組みではなく、期待した結果を提供しません。
また、変数の割り当てなしで比較:
$ echo hello > somefile
$ `(cat somefile | head -1)` | tee -a dump.txt
bash: hello: command not found
somefileの最初の行はstdoutには反映されませんが、コマンドとして解釈されます。コマンドを実行できないため、teeは出力を取得できず、生成するパイプがないため実際には実行されません。