Цикл запроса значения до тех пор, пока пользователь не введет уникальное значение.

Прочитав справочные страницы дольше, чем хотелось бы, я пришел к выводу, что одним файлом это не сделать. Сила +dir :заключается в том, что он позволяет вам добавлять файлы для настройки конфигурации, поэтому вам не нужно редактировать какие-либо файлы пакета.

Все в /etc/auto.master.d буквально включается в /etc/auto.master и использует этот синтаксис.

Фактическое монтирование должно быть в собственном файле и иметь другой синтаксис.

Вот мой /etc/auto.master.d/tools.autofs:

/top/dir    /etc/auto.tools

Все, что он делает, это помещает вторичный файл в дерево каталогов, а затем ссылается на второй файл с деталями монтирования. Вот /etc/auto.tools:

tools -ro  nfsserver:/top/dir/tools

Это работает, но в итоге я решил использовать systemd automount в этом случае. Он отлично работает для таких простых монтирований и означает, что на один пакет меньше для установки и настройки. Что бы это ни стоило, ему также нужны два файла, чтобы все настроить.

1
03.07.2018, 18:01
2 ответа

В целом:

# loop until we get correct input from user
while true; do
    # get input from user

    # check input

    # break if ok
done

Или немного конкретнее:

# loop until we get correct input from user
while true; do
    read -r -p "Give your input: " answer

    # check $answer, break out of loop if ok, otherwise try again

    if pvs | awk 'NR > 2 {print $2}' | grep -qw -e "$answer"; then
        printf '%s already exists\n' "$answer" >&2
    else
        break
    fi
done

Примечание. :Я понятия не имею, что делает pvs.

3
27.01.2020, 23:18

Вот два разных способа проверить существование VG:

  1. попытка чтения VG напрямую vgs --readonly "$vgname"; если эта команда завершится успешно, виртуальная группа уже существует.
  2. Если vgname указано в выходных данных vgs, группа VG уже существует.

Обратите внимание, что второй метод требует от vgsдо не печатать заголовок и печатать только поле имени группы. Имя (в моей системе )часто печатается с начальными и конечными пробелами, поэтому выражение grepвыглядит именно так.

read -p "Enter the name of the volume group to be created: " vgname
while vgs --readonly "$vgname" > /dev/null 2>&1
do
  read -p "Enter the name of the volume group to be created: " vgname
  if vgs --noheadings -o vg_name | grep -q "^ *${vgname} *\$"
  then
    printf "That VG name is already taken; try something else\n" >&2
  fi
done
1
27.01.2020, 23:18

Теги

Похожие вопросы