read コマンドを使用して、ユーザーの入力内容をキャッチしようとしています。
read -p "Please enter your name -> " -n 20 name
しかし、入力した内容を修正することはできないことがわかりました。「BackSpace」を削除して追加しないようにするにはどうすればよいですか?
最も簡単な方法は、-e
フラグを使用して読み取ることです。これにより、readlineが使用されるようになります。
read -e -p "Please enter your name -> " -n 20 name
ターミナル設定(stty)を変更して、削除ではなくバックスペースが消去されるようにすることもできます。
ユーザーが入力したテキスト(またはその他のテキスト)をcol -b
、次のようにパイプ処理できます。
name=`echo $name|col -b`
-e
これは、read
コマンドのオプションを使用するよりも移植性があります。これ-e
は、AIXなどのすべてのUnixシステムでサポートされているわけではないためです(GNU / Linux拡張機能だと思います)。