Read Command: Como verificar se o usuário digitou algo

5

Estou tentando criar uma instrução if else para verificar se o usuário inseriu algo. Se eles tiverem que executar os comandos, e se não, eu quero repetir uma instrução de ajuda.

    
por HS' 22.12.2014 / 22:24

3 respostas

5

Um exemplo (bastante fácil) é o seguinte. Um arquivo chamado userinput é criado e contém o seguinte código.

#!/bin/bash

# create a variable to hold the input
read -p "Please enter something: " userInput

# Check if string is empty using -z. For more 'help test'    
if [[ -z "$userInput" ]]; then
   printf '%s\n' "No input entered"
   exit 1
else
   # If userInput is not empty show what the user typed in and run ls -l
   printf "You entered %s " "$userInput"
   ls -l
fi

Para começar a aprender bash, recomendo que você verifique o seguinte link link

    
por 22.12.2014 / 22:34
3

Se você quiser saber se o usuário inseriu uma string específica, isso pode ajudar:

#!/bin/bash

while [[ $string != 'string' ]] || [[ $string == '' ]] # While string is different or empty...
do
    read -p "Enter string: " string # Ask the user to enter a string
    echo "Enter a valid string" # Ask the user to enter a valid string
done 
    command 1 # If the string is the correct one, execute the commands
    command 2
    command 3
    ...
    ...
    
por 22.12.2014 / 23:37
0

Quando várias opções são válidas, crie uma condição para corresponder à expressão regular :

Por exemplo:

#!/bin/bash

while ! [[ "$image" =~ ^(rhel74|rhel75|cirros35)$ ]] 
do
  echo "Which image do you want to use: rhel74 / rhel75 / cirros35 ?"
  read -r image
done 

Ele continuará pedindo informações até entrar em uma das três opções.

    
por 26.07.2018 / 18:11