私はUbuntu Linuxを使用しています。プログラムmyprogram
がユーザーに具体的に入力するように求められ、メッセージが表示されたら、ユーザーは整数を入力する必要がありますEnter。 Bashスクリプトを使用してこのプロセスを自動化したいと思います。特に100回実行したいです(〜のカウンターを使用myprogram
)。実行するたびにメッセージが表示されたら、現在の値を入力したいと思います。 i
1
100
myprogram
i
(ところで、myprogram
options / switchesを使用すると、-options
これらはすべて定数であるため、bashスクリプトで指定されます。)
このbashスクリプトの不完全なスケルトンは次のとおりです。
#!/bin/bash
for i in {1..100}
do
myprogram -options
done
i
これで、プログラムでメッセージが表示されたときに現在の値を入力するように上記のコードを変更したいと思います。これを行う最良の方法は何ですか?
私が使用しているソフトウェアのウェブサイトをお勧めします<<EOF
行の終わりに使用されますmyprogram -options
。私はこれがbashに使用する入力のために「ファイルの終わり」を見るように指示すると思います。しかし、入力を入れないようにするには終わりファイル? orの直後に入れるには<<
どうすればいいですか<
?
その理由は状況がさらに複雑になるからだ。たとえば、j
非線形、非順次的な方法で変更される整数カウンタを導入できます。その後、各反復ごとに現在のtoの値を指定したいのですが、j
呼び出しとファイルの終わりの間でmyprogram
値が変更されることがあります。j
myprogram -options
EOF
おすすめメニューとは何ですか?
ベストアンサー1
ほとんどすべてのプログラムで動作するecho $i | myprogram -options
必要があり、myprogram -options <<<$i
標準入力を介してプログラムを提供してください$i
。
<foo
stdinというファイルの内容が使用されますfoo
。
<<foo
このテキストと でのみ構成される行の間のテキストは、foo
標準入力として使用されます。これはここのドキュメント(heredoc) Gilesが言ったように、EOF
実際にはファイルの終わりを意味するのではなく、単に一般的な区切り文字記述子にすぎません(この場合は代わりに「foo」を使用します)。
<<<foo
標準入力として文字列「foo」を使用します。$foo
上記のように変数を指定することもでき、シェルはその内容を標準入力として使用します。これは…ここに文字列これは、区切り文書のようにブロック全体の代わりに短い文字列を使用するためです。 Herestringはbashでは動作しますが/bin/sh
。