Назад | Перейти на главную страницу

Использование диалога в bash, как изменить поведение на основе выбора нескольких элементов

Я создаю меню для добавления или перезаписи ключей ssh ​​для нескольких пользователей, используя диалог --checklist. Меню примерно такое

    0) append
    1) user1
    2) root

Я бы хотел, чтобы если был выбран вариант 0 и выбран вариант 1 или 2 или оба, он будет добавлять, а не перезаписывать ключи ssh при регенерации.

Я новичок в диалоге и не могу придумать логику, необходимую, чтобы это произошло.

Моя первая мысль заключалась в том, чтобы использовать параметр --separate-output и каким-то образом использовать grep для результатов, но должно быть более элегантное решение. Любая помощь или совет приветствуются.

Запустите такой диалог:

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