字符串包含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