Создание динамического списка zenity с помощью переменной удара

Я пытаюсь создать интерфейс zenity вызов одного из набора сценариев, расположенных в определенной папке. Для этого я полагаюсь zenity --list. Я хочу, чтобы список имел два столбца: 1) имя файла сценария и 2) текст описания [из комментария третьей строки, в самом файле сценария].

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

zenity --list \
  --title="Choisissez les bogues à afficher" \
  --column="N° de bogue" --column="Gravité" --column="Description" \
    992383 Normal "GtkTreeView plante lors de sélections multiples" \
    293823 Grave "Le dictionnaire GNOME ne prend pas de proxy en charge"     \
    393823 Critique "L'édition de menu ne fonctionne pas avec GNOME 2.0"

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

$ zenity --list   --title="Choose script" --column="Script" --column="Description" a.sh "chaise longue" b.sh "moineau"

и

$ TESTSTRING='a.sh "chaise longue" b.sh "moineau"'
$ echo $TESTSTRING
a.sh "chaise longue" b.sh "moineau"
$ zenity --list   --title="Choose script" --column="Script" --column="Description" $TESTSTRING
1
задан 28 October 2015 в 02:26

3 ответа

Кавычки в заключенной в кавычки строке не имеют значения для оболочки, это делает полевое разделение. Они точно так же, как любой другой символ. Так, когда Вы используете $TESTSTRING вместо "$TESTSTRING", кавычки в - те, которые окружают chaise longue и moineau - , не делают , предотвращают полевое разделение:

$ TESTSTRING='a.sh "chaise longue" b.sh "moineau"'
$ printf "%s\n" $TESTSTRING 
a.sh
"chaise
longue"
b.sh
"moineau"

, Если Вы хотите сохранить свое желаемое разделение, используйте массивы:

$ TESTSTRING=(a.sh "chaise longue" b.sh "moineau")
$ printf "%s\n" "${TESTSTRING[@]}"
a.sh
chaise longue
b.sh
moineau
5
ответ дан 3 December 2019 в 06:40

Заключите каждую переменную в кавычки, как так:

zenity --list   --title="Choose script" --column="Script" --column="Description" "a.sh" "chaise longue" "b.sh" "moineau"

enter image description here

0
ответ дан 3 December 2019 в 06:40

Динамический Список с MySql

, я использую этот код для проекта в моей школе, которая может Вы использовать

#!/bin/bash
arg="-u user -pPass -D Database -s -e"

function lista(){
gerentes=$(mysql $arg "SELECT * FROM empleado;")
OIFS=$IFS;
IFS= 

Первый, я определяю функциональную 'Листу' и называю его в коде zenity

OP=$(zenity --list \

 --title="Seleccione Gerente" \
 --column="id" --column="Fecha" --column="Nombres" --column="cedula" --column="user" --column="cargo" --column="direccion" \
 $(lista))

 echo "Selecciono: $OP"
\n'; array=($gerentes) for ((i=0; i<${#array[@]}; ++i)); do IFS=

Первый, я определяю функциональную 'Листу' и называю его в коде zenity

OP=$(zenity --list \

 --title="Seleccione Gerente" \
 --column="id" --column="Fecha" --column="Nombres" --column="cedula" --column="user" --column="cargo" --column="direccion" \
 $(lista))

 echo "Selecciono: $OP"
\t' cont=(${array[$i]}) for ((j=0; j<${#cont[@]}; ++j)); do echo -n -e "${cont[$j]}" | tr -d '[[:space:]]' echo -n -e "\t" done IFS=$OIFS; done IFS=$OIFS; }

Первый, я определяю функциональную 'Листу' и называю его в коде zenity

OP=$(zenity --list \

 --title="Seleccione Gerente" \
 --column="id" --column="Fecha" --column="Nombres" --column="cedula" --column="user" --column="cargo" --column="direccion" \
 $(lista))

 echo "Selecciono: $OP"
0
ответ дан 3 December 2019 в 06:40

Другие вопросы по тегам:

Похожие вопросы: