bash:从变量中正确扩展参数以进行对话

时间:2015-07-21 01:34:53

标签: bash dialog eval

我一直在努力扩展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"放入数组中,但我的想法很少。

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

1 个答案:

答案 0 :(得分:0)

我解决了自己的问题!

事实证明我省略了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\""