bash 脚本:检查变量是否在 [AZ] 中

xmp*_*ate 7 bash shell-script

如何检查变量是否在 [AZ] 中?

我想实现这样的目标:

read var

while [ $var in [A-Z] ]
do
 #code here
done
Run Code Online (Sandbox Code Playgroud)

我如何实现这一目标?

cho*_*oba 9

在bash中,你可以的右手侧使用的模式==[[ ... ]]

read var
LC_ALL=C # Turn off locale.
if [[ $var == [A-Z] ]] ; then
    echo yes
fi
Run Code Online (Sandbox Code Playgroud)

如果您不想yA-Z.


Val*_*ami 6

简单的一个班轮是:

re='[a-zA-Z]'; if [[ Z =~ $re ]]; then echo "Match"; else echo "No match"; fi
Run Code Online (Sandbox Code Playgroud)

完整的脚本将是:

#!/bin/bash

re='[a-zA-Z]'
read -p "Enter a char or string > " var

if [[ "$var" =~ $re ]]; then
    echo "Entered string matches."
else 
    echo "Entered string does not match";
fi
Run Code Online (Sandbox Code Playgroud)


Kus*_*nda 5

假设$var是单个字符:

如果你使用,case那么它可以移植到任何shshell:

case "$var" in [A-Z]) thing_to_do_here ;; esac
Run Code Online (Sandbox Code Playgroud)

甚至

case "$var" in [[:upper:]]) thing_to_do_here ;; esac
Run Code Online (Sandbox Code Playgroud)

对于那些不喜欢不平衡括号的人:可以写

case "$var" in ([[:upper:]]) thing_to_do_here ;; esac
Run Code Online (Sandbox Code Playgroud)