Я боролся с расширением флагов от переменной для команды bash dialog
.bash: правильное расширение параметров из переменной для диалога
У меня есть следующий вход (уменьшенный):
~/ $ 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"
в массив, но у меня мало идей.
Если я запускаю желаемый выход, он отлично работает. Спасибо за помощь!
Что желаемый результат запуска, который отлично работает? Часть после «становится» не работает для меня. –
@thatotherguy Эта часть должна была прояснить, что я хотел, чтобы поведение было таким, как –
Код, который вы говорите, вы хотели, чтобы это было похоже, дает вам ту же ошибку, что и вы не хотели. Возможно, может произойти сбой при копировании. В любом случае, я рад, что вы это поняли: P –