坑爹的ubuntu /bin/sh

寫了一箇中止mongodb的腳本,代碼片斷以下: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

執行方式爲shell

sh stop.sh

在centos上執行正常,在ubuntu上執行就報錯:ubuntu

欸我就納悶了,哥的代碼沒錯啊,找了半天沒找到緣由,求助stackoverflow,找到緣由:centos

換用如下執行腳本的方式就不會報錯bash

./stop.sh

查了下dash是什麼東西:spa

Debian和Ubuntu中,/bin/sh默認已經指向dash,這是一個不一樣於bash的shell,它主要是爲了執行腳本而出現,而不是交互,它速度更快,但功能相比bash要少不少,語法嚴格遵照POSIX標準。
Ubuntu用的少了,坑大了,記錄下code

相關文章
相關標籤/搜索