echo "Enter your string"
read str;
Как я могу вставить проверку, чтобы удостовериться, что пользователь передал, одним словом, отобразив оператор использования, если слово не было передано как аргумент.
В случае, если требуется вынудить пользователя ввести строку, не числовое значение, и продолжать спрашивать, пока вход не выполняет требование, я определенно использовал бы тест в некоторое время цикле, как:
#!/bin/bash
while true;
do
echo "Enter your string"
read str;
echo "${str}" | grep -q '[0-9]'
if [ $? != 0 ] && [ "$str" != "" ] ; then
break
else
echo 'Invalid input'
fi
done
# use the input for further processing
echo $str
(использование теста от это сообщение )
[ "$str" ] || { echo "This is my usage statement"; exit 1; }
Это использует test
, обозначенный [...]
. В его самой простой форме, как используется здесь, это просто тестирует, если строка непуста (возврат успеха / верна) или пуста (возврат сбоя/лжи). Оператор управления, ||
, выполняет оператор, который следует, только если предыдущий оператор возвратил false.
Я предположил это, если пользователю не удалось ввести непустое str
, то, что Вы хотели бы выйти с кодом неисправности после делания заявления использования. В противном случае удалите exit 1
.
Если у Вас есть что-то более сложное, чтобы сделать, то используйте более формальное if
оператор:
if [ "$str" ]
then
echo "This is my usage statement"
# do other stuff....
exit 1
fi
Вышеупомянутое должно работать над любой оболочкой POSIX включая dash
(/bin/sh
) и bash
.
Вот два связанных теста (оба требуют bash
):
[ "${str//[^[:digit:]]/}" ] || { echo "You entered no numbers"; exit 1; }
И,
[ "${str//[^[:alpha:]]/}" ] || { echo "You entered no letters"; exit 1; }
Вы могли попробовать string$ использования и ввести в терминал это:
эхо "вводят Вас имя"; string$ читают string$
, и он мог бы хорошо работать этот путь.