サンプルスクリプトがあり、一度に1つだけ実行したいです。応答を実行するためにシェルスクリプトにコマンドライン入力をどのように提供しますか?また、スクリプトを変更することはできません。以下のコードは「ls」コマンドのみを実行しようとしています。
have tried below command to execute, but it took 'yes' for both
yes yes no | bash test.sh
e.g:
while true; do
read -p "Would you like to run ls command? (y/n)" response
case $response in
[Yy]* ) ls; break;;
[Nn]* ) break;;
* ) echo; echo "Please answer yes or no.";;
esac
done
while true; do
read -p "Would you like to run PWD command? (y/n)" response
case $response in
[Yy]* ) pwd; break;;
[Nn]* ) break;;
* ) echo; echo "Please answer yes or no.";;
esac
done
誰でも解決策を提案できますか?
答え1
説明からyes
:
指定されたすべての文字列または「y」を含む行を繰り返し出力します。
したがって、yes yes no
出力は次のようになります。
yes no
yes no
yes no
...
しかし、あなたは欲しい
yes
no
文字列に改行を追加してみることができます。
yes 'yes
no' | bash test.sh
あるいは、何度も何度も必要とせず、一度だけ必要なので、スクリプトに手動で提供することもできます。
printf '%s\n%s\n' yes no | bash test.sh