O que significa “read -n1 -s” neste script?

1

Hoje eu aprendi alguns truques sobre a opção de menu na linha de comando. Um deles foi

cat << EOF
    Some lines
EOF
read -n1 -s
case $newvar in
   "1") echo "";
ecsa 

É realmente mágico. Não consigo encontrar nenhuma descrição na página man sobre essa opção. Como a entrada para o comando read foi colocada na opção case ? Geralmente usa uma variável para fazer isso como eu sei.

Eu só quero entender melhor o processo dessa combinação.

while :
do
    clear
    cat<<EOF
    ==============================
    Menu Install DHCP Tool
    ------------------------------
    Please enter your choice:

    (1) Config Network Interface
    (2) Check status
    (3) Config DHCP server
    (Q)uit
    ------------------------------
EOF
read -n1 -s
    case "$REPLY" in
    "1")  config_network ;;
    "2")  check_status ;;
    "3")  config_dhcp ;;
    "q")  exit                      ;;
     * )  echo "invalid option"     ;;
    esac
    sleep 0.2
done
    
por Federal Reserve 05.04.2017 / 05:19

2 respostas

2

A documentação de read observa que:

If no names are supplied, the line read is assigned to the variable REPLY.

A partir desse ponto, é uma declaração case normal. -n1 lê um único byte e -s desativa o eco do terminal da entrada.

    
por 05.04.2017 / 06:08
0

A variável $newvar que você usa na sua breve descrição não existe.

Deve ser $REPLY , como você realmente usa no comando completo.

Esses problemas não têm relação com as opções de leitura -n1 -s sobre as quais você está perguntando.

    
por 05.04.2017 / 08:25

Tags