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

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

    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
Другие вопросы по тегам