Мне нужна помощь в создании функционального списка Zenity.

Вот что у меня есть до сих пор

      #!/bin/bash

zenity --list --title "Packages" --list  --text "select packages you want to install" --checklist --column "id"  --column "Name" 1 "PASSOWRD" 2 "BOOKS" 3 "Firefox" 4 "GIMP" 

Я хочу, чтобы PASSWORD запускал скрипт после того, как он был выбран и нажат «ОК», вот скрипт, который я хочу, чтобы он запускался в терминале

      #!/bin/bash
cd /home/meg/meg_rw/userpath

grep -oP '(?<=Password: ).*' pw.dat

$SHELL

1 ответ

Zenity возвращает имена выбранных столбцов в виде списка, разделенного символом «разделитель».

Это ответ на ваш вопрос:

      #!/bin/bash

zret="$( zenity --list --title "Packages" --list \
    --text "select packages you want to install" \
    --checklist --column "id"  --column "Name" 1 \
    "PASSWORD" 2 "BOOKS" 3 "Firefox" 4 "GIMP" )

if grep -qw PASSWORD <<<"${zret}"; then
    run_your_command
fi

Я надеюсь, что я удалил опечатку в «PASSOWRD».

Из вашего комментария я расширяю его (в следующий раз поместите его в вопрос!).

      #!/bin/bash

IFS='|' read -r -a zret <<<"$( zenity --list \
    --title "Packages" --list \
    --text "select packages you want to install" --checklist \
    --column "id" --column "Name" \
    1 "PASSWORD" 2 "BOOKS" 3 "Firefox" 4 "GIMP" )"

for z in "${zret[@]}"; do
    case "${z}" in
    PASSWORD)
        task_password
        ;;
    BOOKS)
        task_books
        ;;
    Firefox)
        task_firefox
        ;;
    GIMP)
        task_gimp
        ;;
    esac
done
Другие вопросы по тегам