我不知道如何在bash中正确使用正则表达式,我试图以这种方式做错误,正则表达式验证有什么问题?
#!/bin/bash
if [ ! $# -eq 1 ]; then
echo "Error: wrong parameters"
else
if [ $1 =~ "[a-z]" ]; then
echo "$1: word"
elif [ $1 =~ "[0-9]" ]; then
echo "$1: number"
else
echo "$1: invalid parameter"
fi
fi
Run Code Online (Sandbox Code Playgroud)
dar*_*ten 13
我已经重写了您的脚本并获得了以下预期结果:
#!/bin/bash
if [ ! $# -eq 1 ]; then
echo "Error: wrong parameters"
else
if [[ $1 =~ ^[a-z]+$ ]]; then
echo "$1: word"
elif [[ $1 =~ ^[0-9]+$ ]]; then
echo "$1: number"
else
echo "$1: invalid parameter"
fi
fi
Run Code Online (Sandbox Code Playgroud)
您不需要引用您的正则表达式.
不要引用正则表达式,并使用双括号:
[[ "$1" =~ [a-z] ]]
Run Code Online (Sandbox Code Playgroud)
在这个特定情况下引用变量并不是绝对必要的,但它并没有受到伤害,并且总是引用包含变量的字符串是一种好习惯,因为与字拆分相关的非常非常多的陷阱.