GNU/Linux >> Linux Esercitazione >  >> Linux

Come leggere solo un singolo carattere nello script di shell

In ksh puoi sostanzialmente fare:

stty raw
REPLY=$(dd bs=1 count=1 2> /dev/null)
stty -raw

read -n1 funziona per bash

Il stty raw mode impedisce il funzionamento di ctrl-c e può bloccarti in un ciclo di input senza via d'uscita. Anche la pagina man dice stty -raw non è garantito che il tuo terminale torni allo stesso stato.

Quindi, basandoci sulla risposta di dtmilano usando stty -icanon -echo evita questi problemi.

#/bin/ksh
## /bin/{ksh,sh,zsh,...}

# read_char var
read_char() {
  stty -icanon -echo
  eval "$1=\$(dd bs=1 count=1 2>/dev/null)"
  stty icanon echo
}

read_char char
echo "got $char"

In bash, read può farlo:

read -n1 ans

Linux
  1. Come creare un file temporaneo nello script della shell?

  2. Come chiamare altri script di shell come una subroutine?

  3. Come leggere l'intero script della shell prima di eseguirlo?

  4. Come creare un'animazione di rotazione utilizzando lo script Shell?

  5. Come eseguire uno script di shell all'avvio

Come scrivere uno script di shell in Ubuntu

Come memorizzare un comando Linux come variabile nello script della shell

Come eseguire lo script della shell come servizio SystemD in Linux

Come eseguire un comando in uno script della shell?

Come leggere gli argomenti della riga di comando negli script della shell?

Come creare ed eseguire uno script di shell in Ubuntu 22.04