EOFを使用せずにbashスクリプトから自動的にテキストを入力する

EOFを使用せずにbashスクリプトから自動的にテキストを入力する

私はUbuntu Linuxを使用しています。プログラムmyprogramがユーザーに具体的に入力するように求められ、メッセージが表示されたら、ユーザーは整数を入力する必要がありますEnter。 Bashスクリプトを使用してこのプロセスを自動化したいと思います。特に100回実行したいです(〜のカウンターを使用myprogram)。実行するたびにメッセージが表示されたら、現在の値を入力したいと思います。 i1100myprogrami

(ところで、myprogramoptions / 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値が変更されることがあります。jmyprogram -optionsEOF

おすすめメニューとは何ですか?

ベストアンサー1

ほとんどすべてのプログラムで動作するecho $i | myprogram -options必要があり、myprogram -options <<<$i標準入力を介してプログラムを提供してください$i

<foostdinというファイルの内容が使用されますfoo

<<fooこのテキストと でのみ構成される行の間のテキストは、foo標準入力として使用されます。これはここのドキュメント(heredoc) Gilesが言ったように、EOF実際にはファイルの終わりを意味するのではなく、単に一般的な区切り文字記述子にすぎません(この場合は代わりに「foo」を使用します)。

<<<foo標準入力として文字列「foo」を使用します。$foo上記のように変数を指定することもでき、シェルはその内容を標準入力として使用します。これは…ここに文字列これは、区切り文書のようにブロック全体の代わりに短い文字列を使用するためです。 Herestringはbashでは動作しますが/bin/sh

おすすめ記事