我正在做一个小作业,要求我编写一个需要四个单词的脚本,并且用户必须完全按照 echo 的方式输入它。
我的问题是,在我的输出中,它没有给我错误陈述的回应。我在 if 中输入的所有内容都是 true,并给我第一个批准的 echo 语句。是不是变量设置有问题,或者括号有问题?我一直在尝试将它们放在整个 if 部分的各种不同变体中,但似乎无法让它消除错误输出。我还使用 shell check 作为语法检查源,它显示脚本正常运行。任何帮助将不胜感激,这是我写的。
#!/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
使用 bashselect
内置函数
# 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 ."