4단어 스크립트를 요청한 다음 사용자에게 선택한 단어를 알려줍니다. 출력 오류?

4단어 스크립트를 요청한 다음 사용자에게 선택한 단어를 알려줍니다. 출력 오류?

저는 4개의 단어가 필요한 스크립트를 작성해야 하는 작은 과제를 수행하고 있으며 사용자는 이를 echo로 정확하게 입력해야 합니다.

내 문제는 내 출력에서 ​​응답으로 잘못된 설명을 제공하지 않는다는 것입니다. if에 입력한 모든 내용은 true이며 처음으로 승인된 에코 문을 제공합니다. 변수 설정에 문제가 있거나 괄호에 문제가 있습니까? 나는 전체 if 섹션의 다양한 변형을 시도했지만 오류 출력을 제거할 수 없는 것 같습니다. 또한 구문 검사 소스로 쉘 검사를 사용했는데 스크립트가 제대로 실행되는 것을 보여줍니다. 어떤 도움이라도 대단히 감사하겠습니다. 이것이 제가 쓴 것입니다.

#!/bin/bash
varname1=even
varname2=odd
varname3=zero
varname4=negative

# Ask the user for one of four select words
echo "Type one of the following words:"
echo "even, odd, zero, negative"
read varword
if [[ ("$varword" -eq $varname1 ) || ("$varword" -eq $varname2 ) || ("$varword" -eq $varname3 ) || ("$varword" -eq $varname4 ) ]]
then
    echo "The approved word you have selected is $varword ."
else
    echo "The unapproved word you have selected is $varword . Please try again."
fi

답변1

=대신 문자열 비교 에 사용됩니다 -eq.

if [[ ("$varword" = "$varname1" ) || ("$varword" = "$varname2" ) || ("$varword" = "$varname3" ) || ("$varword" = "$varname4" ) ]]

또는 정규 표현식을 사용하세요.

if [[ $varword =~ ^(even|odd|zero|negative)$ ]] ; then

답변2

selectBash 내장 기능 사용

# Ask the user for one of four select words
PS3="Select one of the words: "
select choice in even odd zero negative; do
    [[ -n $choice ]] && break
done
echo "The approved word you have selected is $choice ."

관련 정보