저는 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
select
Bash 내장 기능 사용
# 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 ."