【总结】shell 脚本命令执行结果赋值给变量无效
背景
想要写一个脚本,从某台服务器上抓取某个服务的进程信息。
将某个命令执行结果保存到变量中。
问题现象:使用反引号方式获取不到值
这个问题很怪异,我上次按照同样的方式,获取别的服务进程信息,是可以的。
这次在另一台机器,换另一个进程,就不行。
PROCCESS_INFO=`ps -ef | grep 'XxxServer' | grep 'java'| awk '{print $11}'`
echo $PROCESS_INFO
解决方法
解决方法:反引号前后增加空格,再次执行脚本,就可以正常输出了。
PROCCESS_INFO=` ps -ef | grep 'XxxServer' | grep 'java'| awk '{print $11}' `
echo $PROCESS_INFO
扩展:反引号``和 $()的使用区别
Linux 系统重,还有另一种方式$()可以将命令执行结果赋值给变量。
PROCCESS_INFO=$(ps -ef | grep 'XxxServer' | grep 'java'| awk '{print $11}')
echo $PROCESS_INFO
反引号和$()的两种方式是等价的,但又有不同点,下面介绍其区别。
两种方式异同点:
- 两种方式的效果是等价的;
- 反引号容易和单引号混淆;
- $() 方式支持嵌套使用,反引号不行;
- 绝大多数shell 都支持反引号方式,有些shell 不一定支持$()。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
