2013-12-19 130 views
2

我一直试图在bash脚本中创建一个条件,它会告诉我给定的字符串是否包含字母或连字符以外的字符。如何检查一个字符串是否包含特定字符

即,这是合法的字符串:hello-world

,那种是不是:hello-123-there

这是我到目前为止已经试过,但我想我也有一个逻辑错误:

if ! [[ "$1" == *-* ]] && ! [[ "$1" =~ ^[a-zA-Z]+$ ]] ; then 
     echo "the line is bad" 
     exit 
fi 

(当然,$ 1指的是字符串)。 很想得到你的帮助。

回答

3

你可以使用bash的正则表达式的特点:

[[ "$str" =~ ^[a-zA-Z-]*$ ]] && echo "valid" || echo "invalid" 

或使用水珠:

[[ "$str" == *[^-[:alpha:]]* ]] && echo "invalid" || echo "valid" 

这是一样的:

if [[ "$str" =~ ^[a-zA-Z-]*$ ]]; then 
    echo "valid" 
else 
    echo "invalid" 
fi 
+0

感谢,但 - 我不明白“ &&“和”||“ usgae,你可以写下条件吗?谢谢。 –

+0

检查更新后的答案。 – anubhava

+0

这是你在找什么? – anubhava

相关问题