字符串包含Java

问题描述:

我是新来的Bash的正确版本,并有一个问题,检查变量包含字符串字符串包含Java

作品:

foo="abc def ghi" 

if [[ "$foo" =~ "def" ]]; then 
    echo "Match!" 
fi 

不工作(问题我遇到):

javaVersion="$(java -version)" 

if [[ "$javaVersion" =~ "1.8.0_74" ]]; then 
    echo "Match!" 
fi 

我已经手动检查变量包含字符串1.8.0_74。

问题是java -version打印信息到stderr(2)流而不是stdout(1)。你需要抓住他们都为2>&1字面意思写入标准错误输出流到标准输出流。

javaVersion="$(java -version 2>&1)" 
if [[ "$javaVersion" =~ "1.8.0_74" ]]; then 
    echo "Match!" 
fi 

将按预期工作。

你也做不成这个比较的正则表达式运算符,使用test操作[[就足够了一个简单的比较glob

if [[ "$javaVersion" == *"1.8.0_74"* ]]; then 
    echo "Match!" 
fi