Настройка 2 сетевых адаптеров со статическим IP-адресом, 1 - с Интернетом и 1 - с частным

Вам понадобится CFW или LCFW, как минимум.

Я рекомендую PRO CFW.

Я считаю, что последней версией PRO является PRO-C2. Это легкая кастомная прошивка, которая уходит при полном выключении (не приостановке). «Восстановление» или «Быстрое восстановление» необходимо запускать каждый раз при загрузке.

https://code.google.com/p/procfw/wiki/Installation

0
01.04.2019, 10:09
1 ответ

Читая сразу три имени, вы не сможете легко проверить, действительно ли вы получили три имени, тем более что имена имеют тенденцию иногда содержать пробелы. Вы можете определить получение меньше трех имен, проверив, пусты ли переменные, но это решает только половину проблемы.

Вместо этого читайте каждое имя отдельно:

echo 'Enter three names:' >&2
read -r -p 'Name 1: ' name1
read -r -p 'Name 2: ' name2
read -r -p 'Name 3: ' name3

Это предотвратит ввод пользователем слишком большого количества имен (, так как одно считывается за вызов read, а у вас только три из них ), и вы должны использовать

if [ -z "$name1" ] ||
   [ -z "$name2" ] ||
   [ -z "$name3" ]
then
    echo 'One or more names were empty!' >&2
    exit 1
fi

или что-то подобное, чтобы обнаружить слишком мало введенных имен.

Или, если вам нужны имена в массиве:

echo 'Enter three names:' >&2
for (( i=1; i<=3; ++i )); do
    read -r -p "Enter name $i: " name[i]
done

Затем вы можете либо проверить ${name[i]}сразу после того, как он будет прочитан, либо сделать это позже в отдельном цикле.

Наверное, я бы сделал что-то вроде

echo 'Enter three names:' >&2
for (( i=1; i<=3; ++i )); do
    if ! read -r -p "Enter name $i: " name[i] || [ -z "${name[i]}" ]
    then
        echo 'Invalid input, exiting' >&2
        exit 1
    fi
done

Это будет интерпретировать конец -файла -(как нажатие пользователем Ctrl+D)или пустую запись как ошибку и выход.

Как вариант,

echo 'Enter three names:' >&2
for (( i=1; i<=3; ++i )); do
    while true; do
        if ! read -r -p "Enter name $i: " name[i]; then
            echo 'Ok, bye' >&2
            exit 1
        elif [ -n "${name[i]}" ]; then
            # string is non-empty (good!), skip to next name
            break
        fi
        echo 'Empty input, try again' >&2
    done
done

Это позволит пользователю завершить сценарий, нажав Ctrl+D , и предложит пользователю ввести имя еще раз, если введенная строка пуста. Этот тип цикла ввода также позволит вам проверить ввод пользователя другими способами, кроме простого требования, чтобы он был -непустым.

3
28.01.2020, 02:22

Теги

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