Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

readコマンドで改行不要一文字のみで読み込む(あるいはbashでJOG機能的数値増減をやる方法)

実際のところ

"-n"で文字数をきめる

read -n 1 value

キー入力を促す文字を入れ、結果を変数に格納する

read -n 1 -p "Move (w/a/s/d q) :" key

実用例:JOG機能的

コントローラー等でユーザーがロボットを操作しながら位置調整したり検討したりする機能をJOG(ジョグ)機能とか言ったりします

MODE=$1
VAL_X=0
VAL_Y=0

function callPoint() {
   echo $1 | nc -w 0 DISTIP DISTPORT
}

function sendPacket() {
    TARGET=$1
    VALUE=$2
    if [ $MODE = "DEBUG"  ]; then
       echo
       echo "$TARGET=$VALUE"
       echo "start"
    elif [ $MODE = "REAL"  ]; then
       callPoint "$TARGET=$VALUE"
       callPoint "start"
    else
      printf $1 $2
    fi
}

while :
do
  read -n 1 -p "Move (w/a/s/d q) :" key
  case "$key" in
    w) VAL_Y=$(($VAL_Y+200)); sendPacket "y" $VAL_Y;;
    a) VAL_X=$(($VAL_X-200)); sendPacket "x" $VAL_X;;
    s) VAL_Y=$(($VAL_Y-200)); sendPacket "y" $VAL_Y;;
    d) VAL_X=$(($VAL_X+200)); sendPacket "x" $VAL_X;;
    q) echo "Repeat end."
          break ;;
    *) echo "Push w,a,s,d, or q key.";;
  esac
done