如何检查变量是否在 [AZ] 中?
我想实现这样的目标:
read var
while [ $var in [A-Z] ]
do
#code here
done
Run Code Online (Sandbox Code Playgroud)
我如何实现这一目标?
在bash中,你可以的右手侧使用的模式==
在[[ ... ]]
:
read var
LC_ALL=C # Turn off locale.
if [[ $var == [A-Z] ]] ; then
echo yes
fi
Run Code Online (Sandbox Code Playgroud)
如果您不想y
在A-Z
.
简单的一个班轮是:
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)
假设$var
是单个字符:
如果你使用,case
那么它可以移植到任何sh
shell:
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)