スクリプトに引数を渡す Bash スクリプト

スクリプトに引数を渡す Bash スクリプト

私は bash スクリプトの経験があまりありません。ここでやろうとしていることは複雑ではないかもしれませんが、いくつか問題があります。

約 70,000 個のファイルで実行するために使用する C スクリプトがあります。スクリプトは、1 つずつ入力する特定の入力を呼び出しました。たとえば、yes または no の (y/n) を 7 回続けて入力するように求められます。つまり、たとえば、1 つのファイルでスクリプトを実行すると、何かに対して yes または no を入力するように求められ、その後に (y/n) を尋ねる複数のプロンプトが表示されます。この場合、y/n プロンプトは 7 回あります。次に、プロンプトが表示されたら入力する他のいくつかのパラメーターが求められます (たとえば、続行の場合は c、パーセンテージの場合は 100 など)。

これらのパラメータはすべて、70,000 個のファイルすべてで同じです。プロンプトが表示されたら、これらすべての引数を bash スクリプトに渡す方法を誰か教えていただけないでしょうか。かなり基本的なことですが、これまでのところ、次のようになっています。

var='testdir/*'
for i in var; do
    /script $i
done

上記の bash コマンドはスクリプトを呼び出しますが、各ファイルに対してすべてのパラメータを入力するように要求します。注: 基礎となるスクリプトを操作することはできません。

答え1

これは の仕事ですexpect

C プログラムが次のようなものを出力するとします。

question 1? (y/n):
question 2? (y/n):
enter some percent value:
bunch of stuff
confirm? (y/n):

次のような expect スクリプトを記述します。

#!/usr/bin/expect

foreach file [glob /path/to/70k/files/*] {
  spawn "/path/to/c_prog" $file

  expect "question 1? (y/n): " { send "y\r" }
  expect "question 2? (y/n): " { send "n\r" }
  expect "enter some percent value: " { send "100\r" }
  expect "confirm? (y/n): " { send "y\r" }
  interact
}

次にchmod +xスクリプトを実行して、expect /path/to/script

関連情報