샘플 스크립트가 있고 한 번에 하나만 실행하고 싶습니다. 응답을 실행하기 위해 쉘 스크립트에 명령줄 입력을 어떻게 제공합니까? 또한 스크립트를 수정할 수 없습니다. 아래 코드는 "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