这是我目前所拥有的
#!/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