GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So lesen Sie nur ein einzelnes Zeichen in Shell-Skript

In ksh können Sie grundsätzlich Folgendes tun:

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

read -n1 funktioniert für bash

Die stty raw Der Modus verhindert, dass Strg-C funktioniert, und kann dazu führen, dass Sie in einer Eingabeschleife ohne Ausweg stecken bleiben. Auch die Manpage sagt stty -raw ist nicht garantiert, dass Ihr Terminal wieder in den gleichen Zustand versetzt wird.

Aufbauend auf der Antwort von dtmilano mit stty -icanon -echo vermeidet diese Probleme.

#/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 kann es tun:

read -n1 ans

Linux
  1. Wie behandelt man Schalter in einem Shell-Skript?

  2. Wie erstelle ich eine temporäre Datei im Shell-Skript?

  3. Wie erstelle ich eine Rotationsanimation mit Shell-Skript?

  4. So führen Sie Python-Skripte von der Shell aus

  5. So lesen Sie eine .properties-Datei, die Schlüssel mit einem Punkt enthält, mithilfe von Shell-Skript

So schreiben Sie ein Shell-Skript in Ubuntu

So speichern Sie einen Linux-Befehl als Variable im Shell-Skript

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

Wie führe ich einen Befehl in einem Shell-Skript aus?

Wie liest man Befehlszeilenargumente in Shell-Skripten?

So erstellen und führen Sie ein Shell-Skript in Ubuntu 22.04 aus