2015-07-21 3 views
1

Я боролся с расширением флагов от переменной для команды 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" в массив, но у меня мало идей.

Если я запускаю желаемый выход, он отлично работает. Спасибо за помощь!

+0

Что желаемый результат запуска, который отлично работает? Часть после «становится» не работает для меня. –

+0

@thatotherguy Эта часть должна была прояснить, что я хотел, чтобы поведение было таким, как –

+0

Код, который вы говорите, вы хотели, чтобы это было похоже, дает вам ту же ошибку, что и вы не хотели. Возможно, может произойти сбой при копировании. В любом случае, я рад, что вы это поняли: P –

ответ

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\"" 
Смежные вопросы