Одинарные или Двойные кавычки при определении псевдонима?

Мой espeak также возвраты подобные сообщения:

$ espeak -v en-us+3 -s 120 -k 20 "Pray. For. Moe. Jo."
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2212:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm_dmix.c:957:(snd_pcm_dmix_open) The dmix plugin supports only playback stream
Cannot connect to server socket err = No such file or directory
Cannot connect to server socket
jack server is not running or cannot be started

Перенаправление их к /dev/null доберитесь избавил от них, но это только скрывает сообщения:

$ espeak -v en-us+3 -s 120 -k 20 "Pray. For. Moe. Jo." 2>/dev/null
$ 

PulseAudio

Согласно этому потоку похоже, что существует проблема с тем, как PulseAudio настроен, конкретно что существует pcm's в конфигурации ALSA, которые не корректны. thead говорит, что можно безопасно проигнорировать их, если Вам нравится.

Конкретно эти сообщения:

ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe 
ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side

Другие сообщения связаны с Bluetooth (следовательно BT_...) в сообщении.

Конкретно эти сообщения:

ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)
ALSA lib audio/pcm_bluetooth.c:1614:(audioservice_expect) BT_GET_CAPABILITIES failed : Input/output error(5)

В целом похоже, что все эти сообщения могут безопасно быть проигнорированы. Если бы Вы склонны попытаться избавиться от них, я сосредоточил бы свое внимание на том, если я имею какое-либо сервисное выполнение Bluetooth и выключаю их. Дополнительно я просмотрел бы конфигурации ALSA под /etc/alsa и /etc/pulse.

Обходное решение

Если Вы хотите полностью проигнорировать эти сообщения, можно работать espeak ... и перенаправьте эти сообщения к /dev/null.

espeak -v en-us+3 -s 120 -k 20 "Pray. For. Moe. Jo." &> /dev/null

4
13.04.2017, 15:36
3 ответа

В упомянутом примере, где расширение для псевдонима - это одно слово, не содержащее ни одного символа, подлежащего расширению, не имеет значения, как вы процитируете имя _cutf:

$ alias cutf="_cutf"
$ alias cutf
alias cutf='_cutf'

$ unalias cutf
$ alias cutf='_cutf'
$ alias cutf
alias cutf='_cutf'

$ unalias cutf
$ alias cutf=_cutf
$ alias cutf
alias cutf='_cutf'

Как видно из этого взаимодействия, повторение значения псевдонима cutf каждый раз давало один и тот же результат. Так что, да, здесь стили цитирования взаимозаменяемы.

Не имеет значения, что расширение относится к имени функции: по крайней мере, с bash, псевдонимы выполняют простую текстовую подстановку (мне не очевидно, каким образом определение псевдонима полезно; прямой вызов базовой функции кажется таким же простым).

3
27.01.2020, 20:46

Все просто - если переменной нет, то скобки взаимозаменяемы. Скрипт Shell, хотя и очень полезен, но является очень простым языком. Я (и некоторые другие, кого я знаю) склонен использовать двойные кавычки по умолчанию, просто по привычке - и я никогда не сталкивался с проблемами.

2
27.01.2020, 20:46

Это ответ на вопрос, поставленный в заголовке (который привел меня сюда), а не на конкретный вопрос ОП.

Одинарные кавычки оцениваются динамически:

alias QS='echo $PWD'

Двойные кавычки оцениваются во время создания и после этого никогда не меняются:

alias QD="echo $PWD"

Такое же поведение встречается в bash, zsh и, я думаю, в других оболочках.

14
27.01.2020, 20:46

Теги

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