キーボードから入力を受け取るシェルスクリプトがあるとします。すべての入力をファイルに書き込んでから、キーボードを使用する代わりに、そのファイルを使用してスクリプトへの入力を提供します。出来ますか?はいの場合はどうですか?前もって感謝します。
いつ
...これは非常に簡単です。 input redirection を使用するだけでよく、入力リダイレクトの最も単純な形式で十分です。
./script < answers
./script
を実際にプログラムまたはスクリプトを実行するコマンドに置き換え、answers
をすべての入力を含むファイルへのパスに置き換えます。
(より便利であるとわかった場合は、< answers ./script
と書くこともできます。どちらの場合も、answers
の直前に<
があります。--<answers
と書くこともできます--_./script
に渡す必要がある他のコマンドライン引数がある場合は問題ありません。)
これが機能する方法は、デフォルトでは 標準入力 が通常はターミナルですが、任意の ファイルまたはデバイス にリダイレクトできます。シェル演算子<
は標準入力をリダイレクトします。詳細およびリダイレクトの詳細については、 Redirections を参照してください。
一方、プログラムまたはスクリプトが要求する情報がよくわからない場合は、尋ねられる場合とされない場合、または任意の順序で尋ねられる場合、あるいは重要なバリエーションを尋ねられます-次に、必要な入力の提供を処理する別のスクリプトを記述します。これを自動化するツールがあります。多くの場合、 expect
が適切な選択です。しかし、あなたが言ったことから、あなたがこれを必要としているようには思えません。 (もしそうなら、あなたはもっと詳細を与えるべきです。)
私は「ヒアストリング」があなたのためにこれを行うことができると信じています。使用法: command <<< $Word
。そしてもちろん、各エントリは次のように別々の行になければなりません:
first variable
second variable
third variable
そして、下記のサイトからの簡単な例:
# Instead of:
if echo "$VAR" | grep -q txt # if [[ $VAR = *txt* ]]
# etc.
# Try:
if grep -q "txt" <<< "$VAR"
then # ^^^
echo "$VAR contains the substring sequence \"txt\""
fi
# Thank you, Sebastian Kaminski, for the suggestion.
情報:
$Word
:これは、コマンドに提供される情報を含むファイルです。この場合、コマンドを実行するために必要な値を含むファイルです。