Создайте сценарий, который берет слово в качестве аргумента от пользователя

echo "Enter your string"  
read str;

Как я могу вставить проверку, чтобы удостовериться, что пользователь передал, одним словом, отобразив оператор использования, если слово не было передано как аргумент.

-1
задан 1 November 2014 в 10:04

3 ответа

В случае, если требуется вынудить пользователя ввести строку, не числовое значение, и продолжать спрашивать, пока вход не выполняет требование, я определенно использовал бы тест в некоторое время цикле, как:

#!/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

(использование теста от это сообщение )

1
ответ дан 4 August 2019 в 20:41
[ "$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; }
2
ответ дан 4 August 2019 в 20:41

Вы могли попробовать string$ использования и ввести в терминал это:

эхо "вводят Вас имя"; string$ читают string$

, и он мог бы хорошо работать этот путь.

0
ответ дан 4 August 2019 в 20:41

Другие вопросы по тегам:

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