
私はbashスクリプトの経験があまりありません。私がここでやろうとしていることは複雑ではないかもしれませんが、いくつかの問題に固執しただけです。
そのため、約70,000個のファイルを実行するために使用する必要があるCスクリプトがあります。スクリプトを使用すると、特定の入力を呼び出して1つずつ入力できます。たとえば、「はい」または「いいえ」を求めるメッセージは、y / nを7回連続して入力するように求められます。たとえば、ファイルからスクリプトを実行すると、「はい」または「いいえ」の入力を求められ、続いて複数のプロンプト(y / n)が表示されます。この例には7つのy / nプロンプトがあります。続行するには、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):
次の期待スクリプトを作成できます。
#!/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