当输入Java -version的时候,如果安装了jdk,会输出类似下面的信息:
$ java -version java version "1.6.0_34" Java(TM) SE Runtime Environment (build 1.6.0_34-b04) Java HotSpot(TM) 64-Bit Server VM (build 20.9-b04, mixed mode)
可以用expr match对输出结果进行查找,如果找到子字符串"java version",就认为Java可用。#!/bin/bash v=`java -version 2>&1` echo 'check java platform...' pos=`expr match "$v" 'java'` if [ $pos -gt 0 ] then echo 'java was installed' else echo 'java was not installed' fi
2>&1 这个命令很奇怪,简称"二大爷的"。2是stderr,1是stdout
2>1就是将stderr重定向到stdout, 1前面用&是为了告诉bash 1是file descriptor而不是file name
expr match 第二个参数是正则表达式,因此匹配功能比较强大。如果匹配失败,则返回0,否则返回大于0的整数。