我在 bash 中使用此代码使我的脚本具有交互性。我的意思interactive
是让脚本问我一些问题,例如我的数据的路径是什么:
#!/bin/bash -ef
read userInput
if [[ -n "$mypath" ]]
then
datadir=$mypath
fi
printf "YOUR PATH TO DATA IS: $datadir ";
我有以下问题:
- 以前的代码无法完美显示单词,特别是当我使用
TAB
键完成单词或right/left arrows
浏览字母时。例如,如果我在写入路径时犯了错误,那么当我想使用 、 、 等任何键纠正此错误时Home
,End
这些arrows left/right
键无法正常工作 - 如果我的条目是
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
。