명령에 계속 응답하려면 쉘 스크립트에 y와 n을 어떻게 제공합니까?

명령에 계속 응답하려면 쉘 스크립트에 y와 n을 어떻게 제공합니까?

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

관련 정보