请求四个单词的脚本,然后告诉用户他们选择的单词。输出错误?

请求四个单词的脚本,然后告诉用户他们选择的单词。输出错误?

我正在做一个小作业,要求我编写一个需要四个单词的脚本,并且用户必须完全按照 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 ."

相关内容