码迷,mamicode.com
首页 > 系统相关 > 详细

坑爹的ubuntu /bin/sh

时间:2016-05-17 00:43:24      阅读:291      评论:0      收藏:0      [点我收藏+]

标签:

写了一个停止mongodb的脚本,代码片段如下:

 1 #!/bin/bash
 2 
 3 # stop mongo
 4 echo "stop mongodb..."
 5 MONGO_PID=`ps -ef | grep mongod | grep -v grep  | awk {print $2}`
 6 if [[ a${MONGO_PID} == a‘‘ ]]
 7 then
 8     echo "mongodb is not running..."
 9 else
10     kill -2 ${MONGO_PID}
11     sleep 5
12     if ps -ef  | grep -v grep | grep -q mongod
13    then
14         echo "mongodb stop failed"
15     else
16         echo "mongodb stop successful"
17     fi
18 fi

执行方式为

sh stop.sh

在centos上执行正常,在ubuntu上执行就报错:

技术分享

欸我就纳闷了,哥的代码没错啊,找了半天没找到原因,求助stackoverflow,找到原因:

技术分享

换用以下执行脚本的方式就不会报错

./stop.sh

查了下dash是什么东西:

Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。
Ubuntu用的少了,坑大了,记录下

坑爹的ubuntu /bin/sh

标签:

原文地址:http://www.cnblogs.com/hoods/p/5499975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!