java命令的坑爹经历
Linux实验要做一个shell脚本,用来一键化安装配置JDK+Tomcat环境
第一步就是判断本机是否装有JDK,我的想法是执行java -version命令,然后把输出存到一个变量中,然后对这个变量进行字符串判断,如果已安装JDK,就会输出相应的版本信息,如果没安装,就会输出一个以"-bash"开头的命令找不到的字符串。原理还是很简单的。代码如下
flag=$(java -version)
然后我测试了一下,echo $flag,发现打印的一直都是空字符串,这坑比东西,怎么输出的结果不能保存到flag变量中
最后百度后发现java命令执行的输出结果居然是写到错误输出流中去了,也就是2的流中去了
知道这一层原理之后,解决方法就很明显了,直接把2重定向到1就可以了
修改后的代码如下
flag=$(java -version 2>&1)
再打印echo $flag就可以得到java命令的执行结果了