如何在bash脚本中提示用户进行确认?
这个问题在这里已经有了答案:
read -p "Are you sure? " -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
# do dangerous stuff
fi
编辑 :
我整合了levislevis85的建议(谢谢!)并添加了-n
选项来read
以接受一个字符,而无需按Enter键。 您可以使用其中的一个或两个。
而且,否定形式可能如下所示:
read -p "Are you sure? " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 # handle exits from shell or function but don't exit interactive shell
fi
但是,正如Erich指出的那样,在某些情况下,例如脚本在错误的shell中运行导致的语法错误,否定形式可能会使脚本继续执行“危险的事情”。 失效模式应有利于最安全的结果,所以只有第一,非否定if
应该被使用。
用例/ esac。
read -p "Continue (y/n)?" choice
case "$choice" in
y|Y ) echo "yes";;
n|N ) echo "no";;
* ) echo "invalid";;
esac
优点:
这样你可以得到'是''是'或'输入'
read -r -p "Are you sure? [Y/n]" response
response=${response,,} # tolower
if [[ $response =~ ^(yes|y| ) ]] || [[ -z $response ]]; then
your-action-here
fi
链接地址: http://www.djcxy.com/p/25535.html
上一篇: How do I prompt a user for confirmation in bash script?