如何在shell脚本中比较“abc”和abc?

如何在shell脚本中比较“abc”和abc?

我的代码需要将“stop”与 stop 进行比较,这是标准 bash 字符串。

pi@raspberrypi:~/Voice $ ./test.sh | more
"stop"
stop

我的代码:

#!/bin/bash
command=stop
while :
do
  QUESTION=$(cat stt.txt) #stt,txt has command "stop"
  echo $QUESTION
  echo $command
  if [ "$QUESTION" == "$command" ]; then
    echo "You said "stop"!"
    break
  fi
done

我尝试了不同的command="stop“,结果是相同的。我尝试输入command=$('stop'),只一次就可以了,然后它抱怨: ./test.sh: line 2: stop: command not found.

我不知道为什么将停止设置为命令而不是“停止”时突然停止工作

答案1

谢谢大家的帮助。我尝试不同的一种,这对我有用!

#!/bin/bash
command="\"stop\""
while :
do
  QUESTION=$(cat stt.txt) #stt,txt has command "stop"
  echo $QUESTION
  echo $command
  if [ "$QUESTION" = "$command" ]; then
    echo "You said $command"\!
    break
  fi
done

答案2

#!/bin/bash
command="stop"
while :
do
  QUESTION=$(cat stt.txt) #stt,txt has command "stop"
  echo $QUESTION
  echo $command
  if [ "$QUESTION" == "$command" ]; then
    echo "You said $command"\!
    break
  fi
done

我对你的脚本做了两处修改。

  1. 所有直接输入到脚本中用于变量的字符串都应该被引用,否则 bash 将尝试将它们解释为命令。因此,这不是声明具有字符串值“stop”的变量“command”的有效方法。

    command=stop
    

    这是一个有效的方法。

    command="stop"
    
  2. bash 也会尝试解释你的 !当你试图回忆一个事件时,你需要将其放在引用之外并逃避它。

    echo "You said $command"\!
    

答案3

grep -q '"stop"' < in > /dev/null && echo hooray

相关内容