bash:正确扩展对话框变量的参数
bash: Correctly expanding parameters from variable for dialog
我一直在为 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 }' | 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\""
我一直在为 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 }' | 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\""