我想在一个有潜在危险的bash脚本的顶部快速提示“你确定吗?”以进行确认,最简单/最好的方法是什么?
当前回答
用例/esac。
read -p "Continue (y/n)?" choice
case "$choice" in
y|Y ) echo "yes";;
n|N ) echo "no";;
* ) echo "invalid";;
esac
优点:
更整洁的可以更容易地使用“OR”条件可以使用字符范围,例如[yY][eE][sS]来接受单词“yes”,其中任何字符都可以是小写或大写。
其他回答
[[ -f ./${sname} ]] && read -p "File exists. Are you sure? " -n 1
[[ ! $REPLY =~ ^[Yy]$ ]] && exit 1
在函数中使用此选项查找现有文件并在覆盖之前提示。
用例/esac。
read -p "Continue (y/n)?" choice
case "$choice" in
y|Y ) echo "yes";;
n|N ) echo "no";;
* ) echo "invalid";;
esac
优点:
更整洁的可以更容易地使用“OR”条件可以使用字符范围,例如[yY][eE][sS]来接受单词“yes”,其中任何字符都可以是小写或大写。
下面是我使用的函数:
function ask_yes_or_no() {
read -p "$1 ([y]es or [N]o): "
case $(echo $REPLY | tr '[A-Z]' '[a-z]') in
y|yes) echo "yes" ;;
*) echo "no" ;;
esac
}
还有一个使用它的示例:
if [[ "no" == $(ask_yes_or_no "Are you sure?") || \
"no" == $(ask_yes_or_no "Are you *really* sure?") ]]
then
echo "Skipped."
exit 0
fi
# Do something really dangerous...
输出始终为“是”或“否”默认为“否”除“y”或“yes”之外的所有内容都返回“no”,因此对于危险的bash脚本来说是非常安全的它不区分大小写,“Y”、“是”或“是”与“是”相同。
我希望你喜欢,干杯
这是我在其他地方找到的,有更好的版本吗?
read -p "Are you sure you wish to continue?"
if [ "$REPLY" != "yes" ]; then
exit
fi
qnd:使用
read VARNAME
echo $VARNAME
对于没有读线支持的单行响应。然后根据需要测试$VARNAME。