ファイル名をコマンドに渡すと、「command < filename.txt」がどのように見えるか

ファイル名をコマンドに渡すと、「command < filename.txt」がどのように見えるか

どのように見えますか?command < filename.txtfilename.txtcommand

内容を話してみるとfilename.txt次のようになります。

To: [email protected]
Message: Some message

私は似たようなことを試しましたが、運がありませんでした。このようにコマンドで解析するときのテキストファイルの内容はどのように見えますか?command "To: [email protected]\n Message: Some message"

答え1

あなたのシナリオではcommand標準入力を読んでいます。この情報を提供する他の方法を許可しない限り、引き続きこの方法で入力を提供する必要があります。したがって、そのファイルを使用したくない場合は、使用printfパイプを含む:

printf "To: [email protected]\nMessage: Some message" | command

答え2

bash や ksh93 などの新しいシェルは、リテラル文字列を STDIN のコマンドに渡したい場合は、「document here」と「string here」をサポートします。実際、ほとんどのシェルはここでドキュメントをサポートしています。

文字列は次のとおりです。

command <<<"some string"

ここにある文書:

command <<END
this will be on
command's STDIN until
an END is encountered by itself
END

ここでは、<<ドキュメントの終わりを表示するために終端として次のものを使用します。ターミネータは行の先頭に単独で表示する必要があります。他のシェルには、前のタブ文字を削除するオプション、変数を拡張するかどうかを制御するためのターミネータの他の引用符、シェルメタ文字など、いくつかのよりクールな可能性があります。詳細については、シェルのマニュアルページを確認してください。

とにかくcat -asコマンドを使用すると、2つの構造を簡単にテストできます。私は個人的にここで文字列をたくさん使っています。

関連情報