Spd-скажите не объявляет аргумент

Я записал сценарий, и первая часть не работает:

#!/bin/bash
spd-say "What do you want?"
read a
if [ "$a" == "water" ] || [ "$a" == "Water" ]
then
spd-say "Take the bottle."
else 
spd-say "Sorry, we don't have water, choose something else."
fi

spd-say "Please pay the money."
read b
if [ "$b" == "yes" ] || [ "$b" == "Yes" ]
then
spd-say "Thanks."
else
spd-say "Sorry!"
fi

Когда я выполняю код, первая часть задает вопрос, но независимо от моего ответа это пропускает к второму вопросу, в то время как вторая часть после "Платы деньги" работает хорошо. Я не знаю, почему, но структура обеих частей является тем же. Кто-либо может помочь?

2
задан 29 May 2018 в 20:00

1 ответ

Для тех, кто не знает (я не сделал ни одного): spd-say читает данный текст вслух (например, если Вы не можете считать себя или как слушание вместо того, чтобы читать).

Ваш сценарий выглядит хорошо, но Вы упали в прерывании:

spd-say не ожидает, пока это не говорило данный текст. Вместо этого команда (почти) сразу возвращает и продолжает говорить в фоновом режиме. Если Вы выполните его во второй раз, не ожидая первого разговора для завершения (как в сценарии), то это просто обсудит первую часть. Для предотвращения этого используйте -w (или --wait) переключатель. Затем spd-say возвратится только, после того как это завершило разговор. См. страницу справочника для дальнейших переключателей.

Таким образом вместо

spd-say " Sorry, we don't have water, choose something else."

использовать

spd-say --wait " Sorry, we don't have water, choose something else."
6
ответ дан 2 December 2019 в 01:42

Другие вопросы по тегам:

Похожие вопросы: