2015-04-14 64 views

回答

6

根本不需要拨打awk。您可以利用通配符的:

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

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

[yY]*将匹配任何字符串阅读之前开始或者yY

+0

感谢您的回复。但我正在尝试更多与正则表达式的组合,以使它更可靠。 但有些事情出错了。 if [[$ flag!= [yY] [(eE |)] [(sS |)]]];然后 –

2

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

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

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

请注意,在''bash'中引入了'typeset'的'-l'标志。4. – chepner

+2

'-l'方便; '-u'是大写的等价物(但是,如前所述,需要Bash 4+)。还要注意,Bash更喜欢''声明''排版' - 后者被认为是过时的。 (相反,'ksh',_only_识别'typeset')。 – mklement0

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

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

相关问题