Как установить значение по умолчанию в фрагменте IF? - PullRequest
3 голосов
/ 30 мая 2010

У меня есть следующий фрагмент скрипта bash, написанный на Solaris 10:

printf "port(389)="
read PORT
  if [[ $PORT == "" ]]; then
     PORT=389
  fi

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

Есть предложения?

Ответы [ 5 ]

1 голос
/ 30 мая 2010

Это запрашивает ввод данных пользователем, и если ввод нажимается сам по себе, устанавливает значение port по умолчанию "389":

read -rp "port(389)=" port
port="${port:-389}"
0 голосов
/ 04 июня 2010

Другой способ только с оболочкой - попробуйте подстановку параметров:

read port
port=${port:-389}
0 голосов
/ 02 июня 2010

Это не совсем то, что вы просили, но у Solaris есть набор утилит для такого рода вещей.

PORT=`/usr/bin/ckint -d 389 -p 'port(389)=' -h 'Enter a port number'`

Проверьте другие утилиты / usr / bin / ck *, чтобы запросить у пользователя другие типы данных, включая такие вещи, как файлы или имена пользователей.

0 голосов
/ 30 мая 2010

Если пользователь ничего не вводит, тогда $PORT заменяется ничем - древнее соглашение для создания этой работы с оригинальной оболочкой Bourne:

if [ "x$PORT" == "x" ]; then

Хоть и более современные оболочки (то есть фактический bash, но не Solaris 10 / bin / sh, который древний панцирь Борна) должен уметь иметь дело:

if [[ "$PORT" == "" ]]; then

или даже

if [[ -z "$PORT" ]]; then
0 голосов
/ 30 мая 2010

Если вы передадите -e в read, вы можете использовать -i, чтобы указать начальное значение для приглашения.

...