windows下指令碼在linux執行換行問題
NOWDATE=`date +%Y%m%d`
LOG_DIR="/data/logs/nginx"
LOG_PATH=${LOG_DIR}${NOWDATE}
echo "date:$NOWDATE"
echo "LOG_DIR:$LOG_DIR"
echo "LOG_PATH:"
echo ${LOG_PATH}
簡簡單單的程式碼,輸出不是我想要的
date:20160708
LOG_DIR:/data/logs/nginx
LOG_PATH:
20160708gs/nginx
用 sh -x nginxstatic.sh 檢視
++ date +%Y%m%d
+ NOWDATE=$'20160708\r'
+ LOG_DIR=$'/data/logs/nginx\r'
+ LOG_PATH=$'/data/logs/nginx\r20160708\r\r'
+ echo $'date:20160708\r\r'
date:20160708
+ echo $'LOG_DIR:/data/logs/nginx\r\r'
LOG_DIR:/data/logs/nginx
+ echo $'LOG_PATH:\r'
LOG_PATH:
+ echo -e $'/data/logs/nginx\r20160708\r\r\r'
20160708gs/nginx
原來該指令碼是在windows下寫的 換行符為\r\n,而linux換行符為\n \r為回到行首,所以會出現這樣的問題。
以後可以在執行windows檔案前 用dos2unix命令轉換檔案