Use “read” no script Bash com uma resposta padrão

2

Como posso usar read com algo como resposta padrão, que o usuário pode alterar? (uma resposta padrão)

    
por Flo 04.11.2014 / 16:45

2 respostas

4

Você escreveria isto:

read -p "enter a value: " -i default -e answer
echo "you answered: $answer"
  • -i default especifica a resposta padrão.
  • -e ativa o modo interativo (edição) para read . Sem essa opção, a resposta padrão não funciona.

Portanto, não podemos editar o valor padrão com o bash 3.2. Você poderia fazer isso:

default="the default value"
read -p "your answer [default=$default] " answer
: ${answer:=$default}
echo "you answered: $answer"

Isto usa o valor padrão se o usuário não inserir nada (string vazia)

    
por 04.11.2014 / 17:20
0

Referência read - Leia uma linha da entrada padrão :

This is a BASH shell builtin.

One line is read from the standard input, and the first word is assigned to the first name, the second word to the second name, and so on, with leftover words and their intervening separators assigned to the last name.

If there are fewer words read from the standard input than names, the remaining names are assigned empty values.

The characters in the value of the IFS variable are used to split the line into words.

The backslash character '\' may be used to remove any special meaning for the next character read and for line continuation.

If no names are supplied, the line read is assigned to the variable REPLY. The return code is zero, unless end-of-file is encountered or read times out.

Examples

#!/bin/bash
read var_year
echo "The year is: $var_year"

echo -n "Enter your name and press [ENTER]: "
read var_name
echo "Your name is: $var_name"
    
por 04.11.2014 / 16:48