read
コマンドを使用して、コマンドの引数を対話形式で(たとえば、yes/noオプションなど)読み取るbashスクリプトがあります。引数としてデフォルトのオプション値を渡す非対話型スクリプトでこのスクリプトを呼び出す方法はありますか?
対話型スクリプトに渡す必要があるのは、1つのオプションだけではありません。
より複雑なタスクには、expect
( http://en.wikipedia.org/wiki/Expect )があります。基本的にユーザーをシミュレートし、特定のプログラム出力や関連するものに反応する方法をスクリプトにコーディングできます。
これは、ssh
のような、パスワードのパイプを禁止する場合にも機能します。
たくさんの方法
入力をパイプする
echo "yes
no
maybe" | your_program
ファイルからリダイレクト
your_program < answers.txt
here document を使用します(非常に読みやすい場合があります)
your_program << ANSWERS
yes
no
maybe
ANSWERS
ここでは文字列 を使用します
your_program <<< $'yes\nno\nmaybe\n'
データをファイルに入れて、次のようにリダイレクトできます。
$ cat file.sh
#!/bin/bash
read x
read y
echo $x
echo $y
スクリプトのデータ:
$ cat data.txt
2
3
スクリプトの実行:
$ file.sh < data.txt
2
3
もう1つ追加したいだけです。他の場所で見つけて、非常に簡単です。コマンド "execute_command"のコマンドラインですべてのプロンプトにyesを渡したい場合、単純にyesをパイプします。
yes | execute_command
これにより、すべてのyes/noプロンプトに対する答えとしてyesが使用されます。