admin管理员组

文章数量:1516870

引言

在开发阶段,开发环境测完的配置文件(页面化管理)和shell脚本在上生产时,出现了字符和变量(变量从配置文件中获取)拼接缺失等莫名其妙的问题。

名称介绍

ASCII字符代码表

CR

LF

CRLF

CRLF: Carriage Return & Line Feed ,对应ASCII中的转义字符是 \r\n ,常用于 Window 系统中两个字符,表示 回车并换行

问题

shell脚本在不同系统使用问题

问题描述

Windows 系统开发了某个shell脚本,默认是 CRLF 格式的,在转移到 Linux 系统上执行时,无法正常执行。

解决方案

方案一:使用notepad++
  1. 打开 notepad++ 软件,显示符号

    或者

  2. 替换所有 CRLF LF

    或者

方案二:使用Linux系统相关命令将文件转化为unix格式

一共有三种方式:

  1. 使用 dos2unix 命令 dos2unix file_name ,前提是Linux安装了该命令功能。
  2. 使用 sed 命令 sed -i "s/\r//" file_name 或者 sed -i "s/^M//" file_name 将回车字符删除掉。
  3. 使用 vi/vim 命令,执行 :set ff=unix 将文件设置为 unix 格式文件。

shell脚本所获取的配置文件内容字符存在^M字符

问题描述

通过使用 cat -A file_name 的命令可以查看隐藏的字符,shell脚本所获取的配置文件内容字符存在 ^M 字符,即存在 \r 回车字符。

解决方案

在shell脚本对变量使用

key1=`echo $key1 |sed"s/\r//g"`

总结

名词 含义 ASCII字符 系统
CR Carriage Return,回车 \r Macintosh (早期的 Mac OS )系统
LF Line Feed,换行 \n Unix/Linux/Mac OS X 系统
CRLF Carriage Return & Line Feed`,回车并换行 \r\n Window 系统

本文标签: 或者系统使用