- #!/usr/local/bin/bash
- # 文字幅取得サンプルスクリプト
- # 最初のパラメータで渡された文字(列)の端末上での表示幅を取得する
- # License: CC0
- trap 'stty echo' 0 1 2 15
- stty -echo
- printf "\015" # カーソルを行頭に移動
- printf "$1" # 調べる文字を出力
- printf "\033[6n" # カーソル位置を要求
- printf "\015" # カーソルを行頭に移動
- printf "\033[K" # 現在行消去 (確認の為表示した文字を消す)
- # 端末からの応答: ^[[yy;xxR -- yy:行位置, xx:桁位置
- IFS=";" read -d R -t 1 line col
- if [ $? -eq 0 ]; then
- echo $((col - 1))
- else
- echo "timeout"
- fi
- stty echo