스크립트에 예/아니요 질문이 두 개 이상 있습니까? [폐쇄]

스크립트에 예/아니요 질문이 두 개 이상 있습니까? [폐쇄]

나는 예/아니요 질문이 포함된 bash 스크립트를 작성 중인데, 이제 또 다른 예/아니요 질문을 포함하고 싶습니다. 스크립트는 하나의 예/아니요 질문만 처리할 수 있는데 어떻게 두 개 이상의 예/아니요 질문을 가질 수 있습니까?

예/아니오 스크립트는 다음과 같습니다:

read -p "Do you want to install this programme? " yn 
case $yn in 
[Yy]* ) sudo apt-get install "$programme";; 
[Nn]* ) exit;; 
* ) echo "Please answer yes or no. ";; 
esac 
exit

답변1

여기서 발생할 수 있는 문제는 범위 중 하나입니다. 즉, 변수의 값은 스크립트의 특정 지점에 설정되며 해당 변수 값은 항상 유지됩니다. 나중에 변수가 정의되었으므로(즉, 값이 있음) 조건이 예상대로 평가된다는 문제에 직면하게 됩니다.

다음은 예제를 제공하는 코드 샘플입니다.

foo ()
{
    local yn
    read -p "Do you want to install this programme? " yn
    case $yn in
        [Yy]* ) echo $yn;;
        [Nn]* ) exit;;
        * ) echo "Please answer yes or no. ";;
    esac
}
foo
echo $yn

이제 이 코드 예제를 실행할 때 $yn이 foo() 범위 내에서 에코되면 입력한 내용이 반환되지만 해당 범위 외부에서는 비어 있습니다. foo 함수의 로컬 변수(예: {})를 선언하면 외부에서 정의되지 않습니다. 서로 충돌하지 않고 변수 이름을 재사용하려면 이렇게 하면 됩니다.

답변2

질문을 이해했는지 잘 모르겠지만 알 것 같습니다.

나중에 스크립트에서 정독하기 위해 이러한 선택 사항을 유지하려면 각 질문에 대해 다른 변수 이름을 사용하면 됩니다.

즉. 거기 있는 내용을 복사하여 붙여넣고 예 yn를 들어 변경한 yn_2다음 해당 변수를 Case 문에서도 사용하세요.

관련 정보