有没有简单的方法来检查Bash中是/否选项的所有可能性?

时间:2015-04-14 10:16:24

标签: bash awk aix

我正在尝试检查是/否的不同可能性。下面的代码工作正常但有任何简单的方法可以做到这一点。

注意:我使用的是bash版本2.02.0。

read -p "Using dest path :${DESTPATH}" flag;
OPT=$(echo $flag|awk '{print tolower($0)}')
if [[ ${OPT:0:1} != 'y' ]]; then
     echo "Exiting..."; return
fi

3 个答案:

答案 0 :(得分:6)

您根本不需要致电awk。你可以利用globbing:

read -p "Using dest path :${DESTPATH}" flag

if [[ $flag != [yY]* ]]; then
     echo "Exiting...";
     exit 1
fi

[yY]*将匹配以yY开头的任何字符串

答案 1 :(得分:3)

case $flag in [Yy]* | sure | absolumatively)
    ;;
  *)
    echo Exiting
    exit 1;; 
esac

这可以移植到传统和POSIX sh。如果您使用的是Bash版本4,则可以检查${flag,,}以将值标准化为小写。

答案 2 :(得分:2)

在阅读之前

typeset -l flag: 你只需要检查小写。

@anubhava答案是正确的,使用排版和更改是可选的。

typeset -l flag
read -p "Using dest path :${DESTPATH}" flag
if [[ $flag != y* ]]; then
     echo "Exiting...";
     exit 1
fi