liux文件的每行末尾^M$ 和$
来源:互联网 发布:艺术字设计软件下载 编辑:程序博客网 时间:2024/04/30 14:22
问题:
之前在linux下写了个shell脚本,然后发给一个同事帮我修改(他用的是windows的系统),修改好了之后又发给了我,我直接就覆盖了原来的文件,但是在脚本执行的时候遇到了个问题:
manage_dir=`cat sdm_cristel_external_server.cfg | grep "MANAGE_DIRECTORY" | awk -F "=" '{print $2}' `
echo $manage_dir
if [ "$manage_dir" = "YES" ];then
echo "manage dir"
elif [ "$manage_dir" = "NO" ];then
echo "can not manage dir"
else
echo "please in put a flag"
fi
我在sdm_cristel_external_server.cfg文件里的设置MANAGE_DIRECTORY=YES,但是上面的测试脚本总是输出:please in put a flag
原因:
Unix系统里,每行结尾只有“<换行>",即"\n";windows系统里面,每行结尾是"<换行><回车>" ,即”\n\r"。
一个直接的后果是,Unix的文件在windows打开的话,所有的文字会变成一行;windows文件在Unix里打开的话,在每行的结尾可能会多出一个^M符号。但这个符号通常是直接看不出来的,可以用命令cat -A filename 来查看。
如:windows文件在linux下打开(用cat查看)
# Restore Server configuration^M$
#It indicates which server it is^M$
EXTERNAL_SERVER_NAME_CRISTEL=""^M$
#It is the server IP address^M$
EXTERNAL_SERVER_ADDRESS_CRISTEL=""^M$
#It is the used account for access and transfer to this restore server^M$
EXTERNAL_SERVER_ACCOUNT_CRISTEL=""^M$
#Define the transfer directory in restore server^I^M$
SERVER_TRANSFER_DIRECTORY_CRISTEL=""^M$
#Define the valid directory in restore server^M$
SERVER_VALID_DIRECTORY_CRISTEL=""^M$
#Define the restored directory in restore server^M$
SERVER_RESTORED_DIRECTORY_CRISTEL=""^M$
^M$
解决:
法1. 把windows下发过来的文件,在linux下再重写一遍
法2. 用sed解决
manage_dir=`cat sdm_cristel_external_server.cfg | grep "MANAGE_DIRECTORY" | awk -F "=" '{print $2}' | sed -i 's/^M$//g`
- liux文件的每行末尾^M$ 和$
- 清除Windows下vim下每行末尾的^M
- 删除windows文件末尾的^M
- 文件末尾出现^M的处理方式
- UNIX/LINUX删除文件末尾的^M
- 删除vim打开文件末尾的^M
- windows下的代码放到ubuntu上每行末尾都有^M
- vim 打开文件末尾带有^M的解决办法
- vim 打开文件末尾带有^M的解决办法
- 解决vim打开文件末尾带有^M的问题
- 每行末尾添加字符
- Linux 文件末尾包含^M字符
- Liux下bin文件jdk的安装和环境变量的配置
- liux grep和sed命令的使用
- liux grep和sed命令的使用
- 在Linux下删除文件行末尾的^M符号方法
- 在Linux下删除文件行末尾的^M符号方法
- Windows文件在linux下每行后出现^M字样
- windows-IOCP模型总结
- hdu 1059 优先级队列
- IBM实习生笔试题目(6)
- fiddler替换服务器上文件进行本地调试
- 透彻理解异常并合理使用异常
- liux文件的每行末尾^M$ 和$
- H264 video RTP payload and SDP
- C++ 虚函数表解析
- 进程与线程区别
- HBase性能优化方法总结(一):表的设计
- SSDT Hook的妙用-对抗ring0 inline hook
- AJAX 入门笔记
- 搭建linux C语言开发环境——redhat9+vim+ctags+taglist+cscope
- linux多线程 & IPC【10】自己写一个系统日志服务