Соответствие новой линии - Unix Shell - PullRequest
1 голос
/ 04 августа 2011

Я пытаюсь проверить, была ли найдена новая строка. Причина в том, что мой скрипт запрашивает имя пользователя. Если они нажимают ввод, то используется имя по умолчанию.

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

if [ `expr match "$temp1" "\n"` != 0 ]

Очень плохо знакомы с этим. Спасибо!

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

Вам не нужно проверять, нажали ли они клавишу ввода.Просто проверьте длину строки.Пример:

if [ -z $input ]
then
    echo "No name was input. Setting default name"
    name=JOE
fi

В качестве альтернативы вы можете использовать следующий синтаксис bash, чтобы установить для переменной значение по умолчанию:

name=${input:-JOE}

Это означает, что если переменная input не установлена, name будет установлено по умолчанию "JOE".

1 голос
/ 04 августа 2011

Для этого вы можете использовать встроенную команду `read ':

echo 'what is your name?'; read name; echo Hi ${name:='John'}

Это назначит имя "Джон" в качестве имени по умолчанию, если пользователь нажимает ввод без ввода имени.

Я забыл добавить, что полезной функцией является присвоение значения переменной оболочки по умолчанию, если оно не установлено $ {name: = 'John'}.

1 голос
/ 04 августа 2011

Попробуйте что-то вроде этого:

#!/bin/sh
/bin/echo -n "Who? "
read name
if [ "x$name" != "x" ]
then
    echo "Hi $name"
else
    echo "Hi no-name"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...