GNU/Linux >> Linux の 問題 >  >> Linux

シェルスクリプトで一文字だけ読む方法

ksh では、基本的に次のことができます:

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

read -n1 bashで動作

stty raw モードでは ctrl-c が機能しなくなり、抜け道のない入力ループに陥る可能性があります。また、マニュアルページには stty -raw と書かれています 端末が同じ状態に戻ることを保証するものではありません。

したがって、 stty -icanon -echo を使用して dtmilano の回答に基づいて構築します それらの問題を回避します。

#/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"

bash では、read できます:

read -n1 ans

Linux
  1. シェルスクリプトでスイッチを処理する方法は?

  2. シェルからPythonスクリプトを実行する方法

  3. 起動時にシェルスクリプトを実行する方法

  1. シェルスクリプトで一時ファイルを作成するにはどうすればよいですか?

  2. サブルーチンのように他のシェルスクリプトを呼び出す方法は?

  3. シェル スクリプトを使用して Linux にユーザーを追加する方法

  1. 実行する前にシェルスクリプト全体を読む方法は?

  2. シェルでMP3タグを読む方法は?

  3. シェルスクリプトを使用して回転アニメーションを作成するにはどうすればよいですか?