工作中遇到的问题:
在window上写的shell脚本,通过nodepad++编辑后提交到linux系统跑数,
报错如下:
chmod '/DATA_CENTER/HFile/f_flws_ent/info
: no such file or directory
at 18. User-space table qualifiers can only contain 'alphanumerric characters': i.e. [a-zA-Z_0-9-.]:F_TRADEMARK_INFO_Q
上述两个报错,一个很明显是window的回车换行到了linux不识别 然后找不到需要的文件
第二个是乱码导致无法解析字符串。
下面有两个处理方式:
a) shell中 set ff方式
b) 直接在notepad++里 格式下用UTF-8 无BOM格式重新保存提交
下面是方式a)的做法和介绍:
dos格式文件传输到unix系统时,会在每行的结尾多一个^M,即dos文件中的换行符“\r\n”会被转换为unix文件中的换行符“\n”,而此文件若是一个可执行文件的话,会导致此文件不能被执行,转换的方式有下面一个:
- vi exec.sh
- :set ff=unix(或者:set fileformat=unix)
- :wq
如果以上步骤要求在一个shell批处理文件中完成,那么该怎么办?
可以这样:
- vi +':w ++ff=unix' +':q' ${file}
这样一条命令就可以搞定了,但是要严格注意上面空格的位置,不能多不能少。