我一直试图在bash脚本中创建一个条件,告诉我给定的字符串是否包含字母或连字符以外的字符。
,即这是一个合法的字符串:hello-world
而那个不是:hello-123-there
这是我到目前为止所尝试过的,但我认为我也有一个逻辑错误:
if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then
echo "the line is bad"
exit
fi
(当然,$ 1指的是字符串)。 很想得到你的帮助。
答案 0 :(得分:3)
您可以使用BASH的正则表达式功能:
[[ "$str" =~ ^[a-zA-Z-]*$ ]] && echo "valid" || echo "invalid"
或使用glob:
[[ "$str" == *[^-[:alpha:]]* ]] && echo "invalid" || echo "valid"
与...相同:
if [[ "$str" =~ ^[a-zA-Z-]*$ ]]; then
echo "valid"
else
echo "invalid"
fi