1. 程式人生 > >Windows編寫的shell指令碼,在linux上無法執行

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上可執行的格式。