バックスペースキーを確認してください

バックスペースキーを確認してください

もし私がするなら

read -n 1 c

そして、バックスペースキーを入力してください。

$cバックスペースキーの埋め込みをテストする方法は?

[ "$c" = $'\b' ] 

動作しません。

私がやりたいことは、1行を読み、その行が終わる直前に使用できるプログラムを作成することです。

#!/usr/bin/env bash
ttySettings=`stty --save`
stty -echo
str=
while read -n1 c; do
  if [ -z "$c" ]; then
    break
  fi
  if [ "$c" = $'\b' ]; then
    str="${str%?}"
  else
    str="${str}$c"
  fi
  printf '\r'
  for((i=0;i<COLUMNS;i++)); do
    printf ' '
  done
  printf '\r%s' "$str"
done
echo "$str"
stty "$ttySettings"

デフォルトでは、入力した行(入力した行の下に表示されます)に基づいてリストをフィルタリングし、このフィルタリングをリアルタイムで適用したいと思います。

答え1

$'\177'代わりに使用してください\b

if [ "$c" = $'\177' ]; then
    echo 'Whoa, we got a backspace!'
fi

答え2

バックスペースチェックが機能しているようです。しかし、その行を消去するスクリプトは機能しません(私の場合はbash 4.2.37を使用)。ループは次のとおりです

printf '\r'

に取り替えることができるtput:

tput el1

今後印刷\r)。

関連情報