bashスクリプトを使用してコマンドラインからプログラムを実行しようとしています。この手順は非常に簡単です。コマンドラインから呼び出して、、、、、、とx
入力します1
。filename
5
6
7
しかし、問題があります。
- タイムリーな正しい入力を提供します。つまり、入力1によって開始されたプロセスが完了するまで入力5を待ちます。
- 入力が実際にプログラム自体に到達していることを確認してください。
プログラムの起動後に入力を要求するとコマンドラインから入力できるので、bashスクリプトを使用してこれを行うことができると思いました。 (これは私の最初のbashスクリプトです。この問題を解決するまで「Hello world」と言ったこともありませんでした。)
私はaを使ってみて、似たようなものをwait
見ました。until
コメントありますか?
答え1
まだコメントできないため、OPが十分なデータを投稿していないため、回答として投稿しましたが不完全です。
あなたはこれを調べたいかもしれませんexpect
。これはそれ自体でスクリプト言語ですが、混在させることができますbash
(推奨されませんが)。最も単純な形式は次のとおりです。
#!/usr/bin/expect
expect "Prompt: "
send "my input\r"
expect eof
\r
return
(私の考えでは)ただの鍵という意味ですenter。
たとえば、expect
プログラムのスクリプトは次のようになります。
#!/usr/bin/expect
expect "Provide 1: "
send "1\r
expect "Provide filename: "
send "foobar.txt\r"
expect "Provide 5: "
send "5\r"
# and so on...
expect eof
あなたのニーズに合わせて回答を調整できるように、これまでに持っていたコードのヒントとプログラム「x」のサンプル出力を提供してください。