linux shell 执行结果跟 命令行执行结果不一样。

weixin_41218561 2017-11-29 06:48:58


####脚本如下 OSW_init.sh


SCRIPTLOC=/orabak/oswbb/oswbb

export SCRIPTLOC

###执行过程,发现 osw_stat 显示都是 2,理论上结果应该为1,也就是只看到 OSW_init.sh 这一个进程。
osw_stat=`ps -ef|grep OSW|grep -v grep| wc -l`
#########加入调试语句,发现返回结果为1.
ps -ef|grep OSW|grep -v grep| wc -l[/color]
osw_chk=`expr $osw_stat`
if [ $osw_chk -eq 1 ]
then
cd $SCRIPTLOC
$SCRIPTLOC/OSWatcher.sh 30 360
fi

exit 0

############

请问:
加入调试语句,发现返回结果为1. 请问为何 在Linux 加入 反斜杠 ·和 不加入反斜杠 为何不一样。

加入反斜杠的语句,返回为2
`ps -ef|grep OSW|grep -v grep| wc -l`

不加入反斜杠胡语句,返回为1
ps -ef|grep OSW|grep -v grep| wc -l
...全文
1624 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_41218561 2017-11-30
  • 打赏
  • 举报
回复
我猜是用``的时候多了一个shell调用什么的,就多了一行 ->是这样的,linux 是这样的,会多调用一个shell, 但是在unix 不会这样。因为想写一个在unix 和 linux 都通用的脚本。 你的意思是说在linux 下; 将 osw_stat=`ps -ef|grep OSW|grep -v grep| wc -l` 改成 ps -ef|grep OSW|grep -v grep| wc -l > 1.txt ows_stat=`cat 1.txt` ,对吗?
ckc 2017-11-30
  • 打赏
  • 举报
回复
你直接输出 ps -ef|grep OSW 的结果看一下 我猜是用``的时候多了一个shell调用什么的,就多了一行

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧