shスクリプトでラップされたJavaプログラムを使用してバイナリ応答ファイルを生成するプロセスを自動化しようとしています(これは多くの問題がありますが、私のコードにはありません)。私が望む結果を得るには、shスクリプトを実行するときに最初のプロンプトで[enter]を押し、2番目のプロンプトで[Y] [enter]を押す必要があります。
Linuxボックスで動作するために、次のコードを使用しました。
echo Y > ans; ./script < ans `echo -e \\\r`
他のLinuxボックスでは動作しません(私のコードではなく、スクリプトは再び無限ループに入ります)。どちらのシステムも同じカーネルとバージョンを実行しています。
私はこれを行うよりエレガントで直接的な方法があると確信しています。しかし、一貫して動作するために必要です。私はこれがボックスの1つが設定される方法ではないと思います。
答え1
簡単なexpect
スクリプトを試してください。
#!/usr/bin/期待 タイムアウト設定 20 /path/to/your/java/shell/script/thing.shの生成 "最初のプロンプト:" {"\r" 転送}が必要です。 "2番目のプロンプト:" {"Y"を送信}が必要です。 互いに影響を与える
...FirstPrompt
最初のプロンプトのテキストはどこにありますか(したがって、シェルスクリプトで「Enterキーを押してください」というプロンプトが表示されたら、そのままプロンプトが必要です。サンプルスクリプトに「FirstPrompt:」を書きましたexpect
)。 SecondPromptは、2つのヒント、単語の単語です。言葉。
...また、あなたのシステムexpect
にインストールされていると仮定します。/usr/bin/expect
そうでない場合は、インストールして正しいパスを使用してください。