Bash

將 Keypress 指定為“if”命令的變數

  • October 15, 2022

在繼續之前,請記住,我知道我可以通過設置菜單配置鍵盤快捷鍵,但這對我的最終目標沒有用處。

我正在嘗試創建一個簡單的腳本以將單個按鍵作為輸入,然後執行操作。理想情況下,我想在up按鍵時執行命令。

雖然我可以整合,例如,x關鍵如下:

echo "press key"
read -sn 1 key
if [ "$key" == "x" ]; then echo "x"; fi

我正在努力找出如何使用此範例中的up密鑰。 有可能這樣做嗎?x

嘗試這個:

#! /usr/bin/env bash

read -p "press key " -sn 1 key 
#you can use -p "Message" instead of using echo "Message" before.

if [ "$key" == $'\x1b' ]; then
  
  read -sn2 chars

  if [[ $chars = '[A' ]];then
     echo You pressed 'Up' key
  fi
else 
  echo Pressed another key
fi

當您鍵入諸如Up key, Right key, Left key,之類的鍵時Down KeyFn+N將生成字元串x1\b。所以你必須檢查變數是否包含該字元串,如果是,那麼你應該閱讀以下兩個字元:

  1. [A用於向上鍵
  2. [C用於右鍵
  3. [B用於向下鍵
  4. [D用於左鍵

引用自:https://unix.stackexchange.com/questions/721042