Windows編寫的shell腳本,在linux上無法執行


  前兩天由於要查一個數據庫的binlog日志,經常用命令寫比較麻煩,想着寫一個簡單的腳本,自動去刷一下數據庫的binlog日志,就直接在windows上面寫了,然后拷貝到linux中去運行,其實很簡單的腳本,具體如下:

#!/bin/bash
#flush mysql logs every day

BASEDIR="/usr/local/mysql"
echo $BASEDIR
BIN="$BASEDIR/bin"
echo $BIN
MYSQL="$BIN/mysql"
echo $MYSQL
USER="root"
PASSWORD="123456"
PORT=1234
OPERTATION="flush logs"
for IP_ADDR in {'192.168.1.108','192.168.1.110','192.168.1.118'}
    do
        echo "$MYSQL --host=$IP_ADDR --port=$PORT --user=$USER --password=$PASSWORD  -e $OPERTATION"
    done

  就是一個很簡單的刷新數據庫日志的操作,用了一個循環語句而已,拷貝到linux上面時,死活就報錯,顯示for循環的語法不對,命令操作路徑不對。

  

  晚上查了好久,就是不能用,而且整個命令的路徑都變了,在原文件上刪除了所有的命令,重新手敲,還是不行,一度懷疑自己寫的shell是有問題的,找了一個測試的機子,將命令拷貝上去,發現是正常的。為了能夠驗證我的腳本是正常的,我都用echo將要執行的命令打印出來了。但是在生產環境上,就是不行,突然想到了格式的問題,dos2unix,嘗試着轉換了一次之后,正常了。太坑了。

  dos2unix將Windows上的格式,轉換成linux上可執行的格式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM