Shell用户提示(Y / n)
我只是想为我的NAS复制一些文件来做一些小小的工作,所以我在Shell脚本方面并不是很有经验。 我知道Linux上的许多命令行工具在Yes / No输入中使用以下命令行工具
Are you yure [Y/n]
大写字母表示标准操作,该操作也将通过按Enter键开始。 这对于快速使用来说很不错。
我也想实现这样的事情,但是我在缓存Enter键时遇到了一些麻烦。 这是我到目前为止:
read -p "Are you sure? [Y/n] " response
case $response in [yY][eE][sS]|[yY]|[jJ]|[#insert ENTER codition here#])
echo
echo files will be moved
echo
;;
*)
echo
echo canceld
echo
;;
esac
我可以添加任何我想要的东西,但它不适用于Enter。
这是一个快速解决方案:
read -p "Are you sure? [Y/n] " response
case $response in [yY][eE][sS]|[yY]|[jJ]|'')
echo
echo files will be moved
echo
;;
*)
echo
echo canceled
echo
;;
esac
如果你使用的是bash
4,你可以用默认的答案“响应预先”响应,这样你就不必显式地对待ENTER
。 (您也可以规范的情况下, response
简化case
声明。
read -p "Are you sure? [Y/n] " -ei "y" response
response=${response,,} # convert to lowercase
case $response in
y|ye|yes)
echo
echo files will be moved
echo
;;
*)
echo
echo cancelled
echo
;;
你应该使用read -n1
read -n1 -p "Are you sure? [Y/n] " response
case "$response" in
[yY]) echo "files will be moved";;
?) echo "canceled";;
esac
根据help read
:
-n nchars return after reading NCHARS characters rather than waiting
for a newline, but honor a delimiter if fewer than NCHARS
characters are read before the delimiter
链接地址: http://www.djcxy.com/p/25549.html