有什么简单的方法可以检查Bash中yes/no选项的所有可能性吗?
Is there any simple way to check all possibilities of yes/no option in Bash?
我正在尝试检查 Yes/No 的不同可能性。下面的代码工作正常,但有什么简单的方法可以做到这一点。
注意:我使用的是 bash 版本 2.02.0.
read -p "Using dest path :${DESTPATH}" flag;
OPT=$(echo $flag|awk '{print tolower([=12=])}')
if [[ ${OPT:0:1} != 'y' ]]; then
echo "Exiting..."; return
fi
您根本不需要调用 awk
。您可以利用 globbing:
read -p "Using dest path :${DESTPATH}" flag
if [[ $flag != [yY]* ]]; then
echo "Exiting...";
exit 1
fi
[yY]*
将匹配任何以 y
或 Y
开头的字符串
typeset -l flag
阅读前:
您只需要检查小写。
@anubhava 回答正确,使用排版和更改是可选的。
typeset -l flag
read -p "Using dest path :${DESTPATH}" flag
if [[ $flag != y* ]]; then
echo "Exiting...";
exit 1
fi
case $flag in [Yy]* | sure | absolumatively)
;;
*)
echo Exiting
exit 1;;
esac
这对于传统和 POSIX sh
是可移植的。如果您使用的是 Bash 版本 4,您可以检查 ${flag,,}
以将值规范化为小写。
我正在尝试检查 Yes/No 的不同可能性。下面的代码工作正常,但有什么简单的方法可以做到这一点。
注意:我使用的是 bash 版本 2.02.0.
read -p "Using dest path :${DESTPATH}" flag;
OPT=$(echo $flag|awk '{print tolower([=12=])}')
if [[ ${OPT:0:1} != 'y' ]]; then
echo "Exiting..."; return
fi
您根本不需要调用 awk
。您可以利用 globbing:
read -p "Using dest path :${DESTPATH}" flag
if [[ $flag != [yY]* ]]; then
echo "Exiting...";
exit 1
fi
[yY]*
将匹配任何以 y
或 Y
typeset -l flag
阅读前:
您只需要检查小写。
@anubhava 回答正确,使用排版和更改是可选的。
typeset -l flag
read -p "Using dest path :${DESTPATH}" flag
if [[ $flag != y* ]]; then
echo "Exiting...";
exit 1
fi
case $flag in [Yy]* | sure | absolumatively)
;;
*)
echo Exiting
exit 1;;
esac
这对于传统和 POSIX sh
是可移植的。如果您使用的是 Bash 版本 4,您可以检查 ${flag,,}
以将值规范化为小写。