關於linux管道使用時遇到的坑

來源:互聯網
上載者:User

關於linux管道使用時遇到的坑
這是我第一次在ChinaUnix上發布部落格,以後有機會希望能大家多分享交流一下!
轉到正題:
今天遇到一個坑:
在指令碼中調用server_function檔案中的conf_del方法去刪除設定檔
然後在刪除指令碼所在的目錄
其中,conf_del方法:
function conf_del {
cnt_EV=`grep "export EVSERVER_RUNTIME" $1 | wc -l`
cnt_QT=`grep "export QT_PLUGIN_PATH" $1 | wc -l`
cnt_Flum=`grep "export FLUME_HOME" $1 | wc -l`
[[ $cnt_EV -eq 1 ]] && sed -i "/export EVSERVER_RUNTIME/d" $1
[[ $cnt_QT -eq 1 ]] && sed -i "/export QT_PLUGIN_PATH/d" $1
[[ $cnt_Flum -eq 1 ]] && sed -i "/export FLUME_HOME/d" $1
}
說白了就是刪除.bashrc檔案中的一些資訊
因為我今天是測試別的功能,所以.bashrc檔案中的相應的刪除資訊沒有

所以,在執行到:
[[ $cnt_EV -eq 1 ]] && sed -i "/export EVSERVER_RUNTIME/d" $1
[[ $cnt_QT -eq 1 ]] && sed -i "/export QT_PLUGIN_PATH/d" $1
[[ $cnt_Flum -eq 1 ]] && sed -i "/export FLUME_HOME/d" $1
這個地方的時候杯具了
指令碼只返回:
[[ 0 -eq 1]]
[[ 0 -eq 1]]
[[ 0 -eq 1]]
然後不再執行刪除指令碼所在目錄的操作

經過檢查測試後發現,應該是Linux管道的問題
由於[[ 0 -eq 1]]導致無法退出conf_del方法

解決方案是:在conf_del方法裡面追加一句
function conf_del {
cnt_EV=`grep "export EVSERVER_RUNTIME" $1 | wc -l`
cnt_QT=`grep "export QT_PLUGIN_PATH" $1 | wc -l`
cnt_Flum=`grep "export FLUME_HOME" $1 | wc -l`
[[ $cnt_EV -eq 1 ]] && sed -i "/export EVSERVER_RUNTIME/d" $1
[[ $cnt_QT -eq 1 ]] && sed -i "/export QT_PLUGIN_PATH/d" $1
[[ $cnt_Flum -eq 1 ]] && sed -i "/export FLUME_HOME/d" $1
echo "all informations have been deleted!"
}
之後,主指令碼中的刪除目錄步驟就可以往下繼續執行了。

備忘:至於為什麼會出現這個情況,我也不是很明白。希望各位知道原因的大咖能和我交流一下。萬分感謝!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.