我正在创建一个菜单,使用 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