どのように見えますか?command < filename.txt
filename.txt
command
内容を話してみると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つの構造を簡単にテストできます。私は個人的にここで文字列をたくさん使っています。