Мне нужна помощь в создании функционального списка 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