键盘上的按键在交互式脚本中不起作用!

键盘上的按键在交互式脚本中不起作用!

我在 bash 中使用此代码使我的脚本具有交互性。我的意思interactive是让脚本问我一些问题,例如我的数据的路径是什么:

#!/bin/bash -ef
read userInput
if [[ -n "$mypath" ]]
then
datadir=$mypath 
fi
printf "YOUR PATH TO DATA IS: $datadir  ";

我有以下问题:

  1. 以前的代码无法完美显示单词,特别是当我使用TAB键完成单词或right/left arrows浏览字母时。例如,如果我在写入路径时犯了错误,那么当我想使用 、 、 等任何键纠正此错误时HomeEnd这些arrows left/right键无法正常工作
  2. 如果我的条目是empty(我的意思是空的没有数据路径或只是一个空白字段),我希望代码再次要求我输入路径或中止进程并退出。

任何建议都将受到高度赞赏。

答案1

while ((1)) ; do
  echo please define path:
  read input
  echo is $input ok [y/n/abort]?
  read answer
  case $answer in
    [yY]|[Yy][Ee][Ss]*)
      path=$input
      break
      ;;
    [Aa][Bb][Oo][Rr][Tt])
      exit
      ;;
    [Nn]|[Nn][Oo])
      ;;
    *)
      echo invalid input, please try again
      ;;
  esac
done

换句话说:case语句上的无限循环只有在用户验证该条目时才会中断。当然,您还可以在发出反馈循环之前检查该路径是否实际存在case

相关内容