bash - 比较整数值

问题描述 投票:0回答:1

我试图在用户不按“返回”键的情况下捕获箭头键。除了我尝试捕捉“esc”键之外,该程序正常工作。我尝试使用我能想到的一切进行比较,但没有成功。包括字符串和数字比较;带引号和不带引号;单括号与双括号等。shellcheck 不会报告任何问题。

要么什么也没有发生(esc 键没有被捕获),要么出现语法错误; “./key-no-return-printf.sh:第37行:[[:':语法错误:需要操作数(错误标记为“'”)”

即$VALUE -eq 27、$VALUE == 27、$VALUE = 27、"$VALUE" -eq "27" 等

#! /usr/bin/bash
clear

function getkey () {
  read -rs -n1 -t.001 KEYIN         # read 1 chr, no echo, no delay
  VALUE=\'$KEYIN
  if [[ $VALUE -eq 27 ]]; then     # trap esc key
    printf "esc caught\n"
  fi
}

while :; do    # --- Infinite loop ---
  KEYIN=""
  VALUE=0
  getkey
  if [[ $KEYIN == [Qq] ]]; then exit; fi
  if [[ $KEYIN != "" ]]; then printf "%s : %d\n" "$KEYIN" "$VALUE"; fi
done
bash shell testing compare
1个回答
0
投票

使用不同的方式获取密钥代码对我有用:

VALUE=$(printf %d "'$KEYIN")
if [[ $VALUE -eq 27 ]]; then     # trap esc key
    printf "esc caught\n"
fi
© www.soinside.com 2019 - 2024. All rights reserved.