sh sudo 字符串参数

Bur*_*l X 2 command-line sudo sh

我正在玩我的 Raspberry Pi Zero,我正在尝试自动化 FM 发射器脚本。

你可以运行脚本 sudo fm_transmitter -f [frequency] -r [.wav music file]

例如:

sudo fm_transmitter -f 103 -r star_wars.wav
Run Code Online (Sandbox Code Playgroud)

我的代码:

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

sudo /home/pi/radio/fm/fm_transmitter -f 103 -r musics[0]
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误,因为它找不到musics[0].

这里可能有什么问题?

Arr*_*cal 5

您已将数组的第一个元素设置为/home/pi/radio/fm/star_wars.wav如下行:

musics[0]="/home/pi/radio/fm/star_wars.wav"
Run Code Online (Sandbox Code Playgroud)

要访问内容,您需要使用$如下方式扩展该数组元素:

sudo /home/pi/radio/fm/fm_transmitter -f 103 -r "${musics[0]}"
Run Code Online (Sandbox Code Playgroud)

引号""用于保留输出格式,大括号{}是扩展数组变量的一部分。

当标准变量可以工作时,不清楚为什么在这里使用数组。你可以替换:

musics[0]="/home/pi/radio/fm/star_wars.wav"
Run Code Online (Sandbox Code Playgroud)

musics="/home/pi/radio/fm/star_wars.wav"
Run Code Online (Sandbox Code Playgroud)

并且使用该变量的行更改为:

sudo /home/pi/radio/fm/fm_transmitter -f 103 -r "$musics"
Run Code Online (Sandbox Code Playgroud)

这要简单得多,因为您不需要使用索引号([0] 所指的部分)。