Linux 错误: $'\r': command not found
Question
前段时间写脚本出现了$'\r': command not found
问题。
#脚本部分内容
#!/bin/sh -x
SCRIPT_PATH=$(cd `dirname $0`; pwd)
. ${SCRIPT_PATH}/../env/env.properties
### USE FOR Jmeter Test
PPVERSION=`date +%Y%m%d-%H%M%S`
JMETER_HOME=${prop_appHome}/current/packages/apache-jmeter-3.3/bin
JMX_HOME=${prop_appHome}/current/config/local.jmx
JMETER_LOGS_HOME=${prop_logHome}
Solution
其实log报错已经非常明确了,是linux无法解析$'\r'
。这其实是windows与linux系统的差异导致的。
因为linux上的换行符为\n
,而windows上的换行符为\r\n
。所以脚本到linux上就无法解析了。
通常的处理办法主要有2种:
处理办法1 set ff=unix
vi hello.sh
Esc进入命令行运行模式
: set ff=unix
处理办法2 dos2unix
dos2unix hello.sh
如果报command not found 是因为你没有安装,安装dos2unix插件即可。
Reference
[1]. 关于$’\r’: command not found错误的一点体会
[2]. shell脚本执行错误 $’\r’:command not found
[3]. set ff=unix;设置Linux中文件中每行后又尖括号的情况
[4]. set ff=unix
[5]. dos2unix命令将dos文件转换为unix格式
[6]. vi命令
还没有评论,来说两句吧...