
<<<をリダイレクトすることについて疑問に思いますbash
。内容が仮想ファイルにあるように、次のチェーンを前のコマンドにリダイレクトすることがわかります。はい
$ cut -d. -f1 <<< A.B
A
$ cut -d. -f1 <<< 'A.B
> C.D'
A
C
しかし、何度も使用するとどうなるかわかりません。はい
$ cut -d. -f1 <<< A.B <<< C.D
C
私は次のような結果を期待しました:
A
C
シェルが最後のリダイレクトだけを考慮するのはなぜですか?ファイルにダミーラインを追加するには?ファイルをインポートcommand
して処理するために、次の例のようなことをしたいと思います。virtual line
my_file
command <<< "virtual line" my_file
ノートbash
:バージョンを使用しています4.4.12(1)-release (x86_64-pc-linux-gnu)
。
答え1
<<<
標準入力をリダイレクトします。 stdinをリダイレクトして再度リダイレクトすると、最初のリダイレクトが失われます。
コマンドに「process stdin」を表す方法がある場合(たとえば、forがcat
ダッシュの場合)、次のようにコマンドの前に行を追加できます。
cat - input_file <<< 'virtual line'
答え2
代替提供ジョロバの答え、次の構文を使用してより完全な入力を設定できます。
command << EOF
virtual line
`cat input_file`
EOF