LINUX.ORG.RU

whiptail с переменными

 


0

1

Имеется задача сделать динамическое меню.
Ввожу:

$ whiptail  --title  "Test Menu Dialog" --menu  "Choose your option" 15 60 4 "1" "Grilled Spicy Sausage"
Всё корректно отображается. Но у меня меню собирается в ходе выполнения скрипта, и нужно передавать переменные в качестве строк меню. Пробую:
$ s="\"1\" \"Grilled Spicy Sausage\""
$ whiptail  --title  "Test Menu Dialog" --menu  "Choose your option" 15 60 4 $s
Создаётся кривое меню:

«1» «Grilled

Spicy Sausage»

- кавычки приехали и разбились пробелы.
Как корректно собрать переменную и передать её в меню?

bash

В bash можно собирать строки в массивы:

declare -a s=("1" "Grilled Spicy Sausage")
whiptail  --title  "Test Menu Dialog" --menu  "Choose your option" 15 60 4 "${s[@]}"

А вот на POSIX shell такого сделать нельзя.

anonymous
()
Ответ на: комментарий от anonymous

А вот на POSIX shell такого сделать нельзя.

Ну если ТС-у только вот это требуется, то есть достаточно одного массива, то один то массив в posix-sh есть - аргументы, например у функции.

vodz ★★★★★
()
Ответ на: комментарий от vodz

один то массив в posix-sh есть

Да, некоторые скрипты используют set -- ... для работы с "$@" как с массивом. А что делать, если он нужен? Такова жизнь.

anonymous
()
Ответ на: комментарий от anonymous

А что делать, если он нужен? Такова жизнь.

Не умеете программить на posix-sh, а лезете в каждую тему. У функций свой собственный набор аргументов. Передавайте как угодно, распарсив в общем потоке входные аргументы скрипта и сформировав аргументы для функций.

vodz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.