sh sudo строковый параметр

Я играю со своим Raspberry Pi Zero, и я пытаюсь автоматизировать сценарий передатчика FM.

Можно запустить скрипт с sudo fm_transmitter -f [frequency] -r [.wav music file]

Например:

sudo fm_transmitter -f 103 -r star_wars.wav

Мой код:

musics[0] = "/home/pi/radio/fm/star_wars.wav"

sudo /home/pi/radio/fm/fm_transmitter -f 103 -r musics[0]

Это дает мне ошибку, потому что это не может найти musics[0].

Какова могла быть проблема здесь?

2
задан 3 January 2019 в 22:16

1 ответ

Вы установили первый элемент массива как /home/pi/radio/fm/star_wars.wav со строкой:

musics[0]="/home/pi/radio/fm/star_wars.wav"

Для доступа к содержанию необходимо развернуть то использование элемента массива $ как так:

sudo /home/pi/radio/fm/fm_transmitter -f 103 -r "${musics[0]}"

Кавычки "" используются для сохранения формата вывода и фигурных скобок {} часть расширения переменной типа массив.

Не ясно, почему Вы используете массив здесь, когда стандартная переменная работала бы. Вы могли заменить:

musics[0]="/home/pi/radio/fm/star_wars.wav"

с

musics="/home/pi/radio/fm/star_wars.wav"

и строка с помощью той переменной изменяется на:

sudo /home/pi/radio/fm/fm_transmitter -f 103 -r "$musics"

Это намного более просто, поскольку Вы не должны использовать индексы (часть, упомянутая [0]).

5
ответ дан 2 December 2019 в 01:52

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

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