我的代码需要将“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
我对你的脚本做了两处修改。
所有直接输入到脚本中用于变量的字符串都应该被引用,否则 bash 将尝试将它们解释为命令。因此,这不是声明具有字符串值“stop”的变量“command”的有效方法。
command=stop
这是一个有效的方法。
command="stop"
bash 也会尝试解释你的 !当你试图回忆一个事件时,你需要将其放在引用之外并逃避它。
echo "You said $command"\!
答案3
grep -q '"stop"' < in > /dev/null && echo hooray