私のコードは、標準の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
スクリプトに 2 つの変更を適用しました。
変数のスクリプトに直接入力されたすべての文字列は、引用符で囲む必要があります。それ以外の場合、bashはそれをコマンドとして解釈しようとします。したがって、これは文字列値 "stop" を使用して変数 "command" を宣言する有効な方法ではありません。
command=stop
これは効果的な方法です。
command="stop"
bashはまたあなたのイベントを解釈しようとします!
echo "You said $command"\!
答え3
grep -q '"stop"' < in > /dev/null && echo hooray