我需要帮助尝试制作一个可用的 Zenity 列表

我需要帮助尝试制作一个可用的 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

相关内容