내 코드는 표준 bash 문자열인 "stop"을 stop과 비교해야 합니다.
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.
"stop" 대신 명령에 stop을 설정하면 왜 갑자기 작동이 멈췄는지 모르겠습니다.
답변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