Comando de leitura: como verificar se o usuário digitou algo

Estou tentando criar uma instrução if else para verificar se o usuário digitou algo. ele deve ser executado por meio dos comandos e, se não, desejo repetir uma declaração de ajuda.

Comentários

  • Com read, normalmente o usuário deve pressionar Enter antes que o script avance; você pode então testar a entrada …

Resposta

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

#!/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 o bash, recomendo que você verifique o seguinte link http://mywiki.wooledge.org/

Resposta

Se você deseja 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 ... ... 

Resposta

Quando várias escolhas são válidas, crie uma condição de tempo 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 entradas, até inserir uma das três opções.

Comentários

  • Seria melhor usar uma instrução select em bash, se o problema fosse restringir a escolha a um conjunto de opções.
  • @Kusalananda, em vez de dar -1, dê um exemplo real! Minha sugestão funciona bem. Mostre que sua sugestão também é boa. Não ' t apenas dê -1 porque você pode – ' realmente não é útil para outros leitores.
  • Aqui ' é um exemplo: select image in rhel74 rhel75 cirros35; do [ -n "$image" ] && break; done
  • @Kusalananda agora isso é muito útil, obrigado! Eu também adicionaria [ -z "$image" ] && select ... para pular a seleção inteira, se $ image já estiver definido.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *