リダイレクトしようLinuxシェルスクリプトへの2番目の応答

リダイレクトしようLinuxシェルスクリプトへの2番目の応答

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そうでない場合は、インストールして正しいパスを使用してください。

おすすめ記事