BASH — создание контекстного меню из массива с одинаковым параметром меню и описанием

#arrays #bash #whiptail

#массивы #bash #всплывающее меню

Вопрос:

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

Это не ошибка, но также не дает мне меню.

Я в основном хочу, чтобы это было в меню: array0 array0 array1 array1 array2 array2

 #!/bin/bash

lsRes=`ls`
IFS=', ' read -r -a array <<< ${lsRes}
choices=$(whiptail --title "Sizes" 
        --menu "Choose a size:" 
        25 78 12 
        "'${array[@]}' '${array[@]}'" 
        3>amp;1 1>amp;2 2>amp;3)
  

Также пробовал это:

 #!/bin/bash


lsRes=`ls`
IFS=', ' read -r -a array <<< ${lsRes}
declare -a args=( --title "Sizes" --menu "Choose a size:" 25 78 12 --)
for item in "${array[@]}"; do
    args =("${item}" "${item}")
done
choices=$(whiptail "${args[@]}")
  

Ответ №1:

Вы не можете сделать это безопасно за один шаг. Вместо этого вы можете создавать аргументы по одному за раз.

 declare -a args=(
    --title "Sizes"
    --menu "Choose a size:" 25 78 12 --
)
for item in "${array[@]}"; do
    args =("$item" "$item")
done
choices=$(whiptail "${args[@]}")