私はLinux adminの初心者です。コードをデバッグする方法をGDBで学習している間に、プログラムが読み取るためのinput.txtファイルを作成する必要があります。次のようなリダイレクトシンボルを知っています >, >> and <
が、Googleで情報を見つけることができませんでした <<
Googleはそれを無視しているので。誰かが説明できますか <<EOF
以下ですか?ありがとう。
cat >input.txt <<EOF
私はLinux adminの初心者です。コードをデバッグする方法をGDBで学習している間に、プログラムが読み取るためのinput.txtファイルを作成する必要があります。次のようなリダイレクトシンボルを知っています >, >> and <
が、Googleで情報を見つけることができませんでした <<
Googleはそれを無視しているので。誰かが説明できますか <<EOF
以下ですか?ありがとう。
cat >input.txt <<EOF
回答:
からの抜粋 記事 :
こちらの文書
here文書は、対話型シェルスクリプトまたはプログラムに入力をリダイレクトするために使用されます。
対話型プログラムまたは対話型シェルスクリプトに必要な入力を提供することで、ユーザーの操作なしでシェルスクリプト内で対話型プログラムを実行できます。
ヒアドキュメントの一般的な形式は次のとおりです。
コマンド <<
デリミタ
資料
デリミタ
ここでシェルは <<
指定された区切り文字を含む行が見つかるまで入力を読み取る命令としての演算子。その後、区切り文字を含む行までのすべての入力行が、コマンドの標準入力に送られます。
区切り文字は、here文書が完了したことをシェルに伝えます。それがなければ、シェルは入力を永遠に読み続けます。区切り文字は、スペースやタブを含まない単一の単語である必要があります。
以下はコマンドへの入力です wc -l
総行数を数える -
$wc -l << EOF
This is a simple lookup program
for good (and bad) restaurants
in Cape Town.
EOF
3
$
あなたは次のようにあなたのスクリプトを使用して複数の行を印刷するためにここの文書を使用することができます -
#!/bin/sh
cat << EOF
This is a simple lookup program
for good (and bad) restaurants
in Cape Town.
EOF
これは次のような結果になります -
これは単純な検索プログラムです
良い(そして悪い)レストランのために
ケープタウンで。
次のスクリプトは、とのセッションを実行します。 vi
テキストエディタを使用して入力をファイルtest.txtに保存します。
#!/bin/sh
filename=test.txt
vi $filename <<EndOfCommands
i
This file was created automatically from
a shell script
^[
ZZ
EndOfCommands
このスクリプトを次のように実行したとします。 vim
機能します vi
その後、あなたはおそらく次のような出力が表示されます -
$ sh test.sh
Vim: Warning: Input is not from a terminal
$
スクリプトを実行した後、あなたはファイルtest.txtに追加された以下を見るはずです -
$ cat test.txt
This file was created automatically from
a shell script
$