【问题标题】:Compare array value with user input bash将数组值与用户输入 bash 进行比较
【发布时间】:2016-05-24 13:29:49
【问题描述】:

我正在尝试将用户输入与字符串数组值进行比较,当我这样做时,当我将它们打印出来时,这两个值似乎相同,但 if 语句并不认为它们相等。我有什么明显的遗漏吗?

k=0
while [ -z $arg1 ]
do
    while [ $k -ne 9 ]
    do
    # ask question
    echo "${question[k]}"
    answer="${answer[k]}"
    read -p "YES/NO " arg1
    # check answer
    if [ '$arg1' = '$answer' ]; # problem is here
    then
        echo "Correct!"
        let "k=$k+1"
    else
        echo "Incorrect!"
        echo "Your answer: $arg1"
        echo "Correct answer: $answer"
    fi
    done
done

【问题讨论】:

  • 看起来您有一个数组 answer,然后您将用包含其中一个元素的变量覆盖该数组。
  • 请看:shellcheck.net

标签: arrays linux bash ascii


【解决方案1】:

替换:你没有在答案和问题数组中放入什么

 if [ '$arg1' = '$answer' ];
 with
 if [ "$arg1" = "$answer" ] ; 

然后检查

【讨论】:

  • 改变你的陈述,把 answer="${answer[k]}" 改为 answer_other ="${answer[k]}" 并检查 if [ "$arg1" = "$answer_other" ] ;
  • 不仍然不高兴,虽然我明白你的意思,因为我对数组和变量使用相同的名称,它很冷已经“混淆”了,不是我改变它,它只是没有感觉
  • 启用 set -x 。这将启用调试选项并提供有关问题所在的更多信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多