在 Bash 中使用对话框如何根据所选的多个项目修改行为

在 Bash 中使用对话框如何根据所选的多个项目修改行为

我正在创建一个菜单,使用 dialog --checklist 为多个用户附加或覆盖 ssh 密钥。菜单如下

    0) append
    1) user1
    2) root

我希望发生的是,如果选择了选项零,并且选择了选项 1 或 2 或两者,它会在重新生成时附加而不是覆盖 ssh 密钥。

我对对话还不熟悉,似乎无法想出导致这种情况发生所需的逻辑。

我的第一个想法是使用 --separate-output 选项并以某种方式对结果使用 grep,但必须有一个更优雅的解决方案。任何帮助或建议都值得赞赏。

答案1

像这样运行对话框:

dialog --checklist text 50 20 10 0 append 0 1 user1 0 2 root 0 2> checklist.txt

管道2>stderr 到它自己的文件 - 这是--checklist输出的最终位置。

然后像这样读取checklist.txt的内容:

APPEND=0
for a in $(cat checklist.txt); do
    if [ "$a" = "\"0\"" ]; then
        APPEND=1
        continue
    fi

    if [ "$APPEND" -eq 0 ]; then
        # Copy ssh key, without appending
    else
        # Append ssh key
    fi
done

相关内容