来由:datax 使用 [““] write端字段数为0,把[””]替换成具体列名后,好家伙,执行时首先把job的配置文件内容打印出来,一看,dbname和tablename后都有\r。
问题原因:
Unix体系里,每行结尾只有"<换行>”,即"\n";
Windows体系里面,每行结尾是"<换行><回 车>”,即"\n\r”。
所以当从Windows上把脚本放入Linux上后,会把"\n\r”一起带入
解决方法:
allSyncTask.sh:脚本名称,自定义
1.使用命令:
dos2unix shell.sh
找不到dos2unix命令时,安装dos2unix:
yum install dos2unix
yum install unix2dos
2.去掉"\r"命令:
sed -i "s/\r//" shell.sh
---------------------------------------- 20230328分界线 -----------------------------------------------------------
找到了一个简单的方法。
修改执行脚本文件类型
shell脚本格式必须是unix才行,但这个脚本是在windows上编写完成传到Linux服务器上的,所以需要修改。
windows环境下的文件是dos格式,即每行结尾以\r\n来标识,而linux下的文件是unix格式,行尾则以\n来标识;
查看文件格式:vim seatunnel-env.sh,编辑文件,执行“:set ff”,若执行结果为fileformat=dos则为dos格式,若执行结果为fileformat=unix则为unix格式。
修改文件格式::vim seatunnel-env.sh,编辑文件,执行“: set ff=unix”,将文件设置为unix格式,然后执行“:wq”,保存退出。