#!/bin/bash
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命令转换文件
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命令转换文件
本文介绍了一个简单的bash脚本,在从Windows环境中移植到Linux时遇到的问题。由于Windows与Linux换行符的不同(Windows使用
,而Linux使用
),导致脚本在Linux环境下运行出现错误。文章详细解释了这一问题,并提供了使用dos2unix命令进行文件转换的方法。
623

被折叠的 条评论
为什么被折叠?



