bash:正确扩展对话框变量的参数



我一直在努力从bash命令dialog的变量中扩展标志。

我有以下输入(简化):

~/ $ pacmd list-sinks
2 sink(s) available.
    index: 0
         ...
            alsa.name = "HDMI 0"
            ...
    index: 1
         ...
            alsa.name = "ALC3232 Analog"
            ...

我将它导入以下内容:

grep "alsa.name|index" | sed "s/^[ *t]*//g" | sed "s/ =/:/g" | awk -F ': ' '{print $2}' | paste -s -d ' '

得到的结果是:

0 "HDMI 0" 2 "ALC3232 Analog"

现在,我想使用这些作为dialog的菜单项。最后,我想要这样的内容:

dialog --title "Interface" --menu "Please choose an option:" $args 3 "Exit" 

dialog --title "Interface" --menu "Please choose an option:" 0 "HDMI 0" 2 "ALC3232 Analog" 3 "Exit"

但是,当我做像

这样的事情时
eval "dialog --title "Interface" --menu "Please choose an option:" $args 3 "Exit""

Error: Expected 2 arguments, found only 1.
Use --help to list options.

我试过很多很多方法,但似乎都失败了。我已经尝试了eval方法,并尝试将0 "HDMI 0" 2 "ALC3232 Analog"放入数组,但我的想法不多。

如果我运行所需的输出,它工作得很好。谢谢你的帮助!

我自己解决了问题!

事实证明,我省略了几个参数dialog本身。命令应该是

eval "dialog --title "Interface" --menu "Please choose an option:" 15 50 5 $args 3 "Exit""

而不是

eval "dialog --title "Interface" --menu "Please choose an option:" $args 3 "Exit""

最新更新