linux脚本-文件格式导致脚本异常
前言
在windows下的文本,默认换行符是^M$,称为CR与LF两个符号;而在Linux中是以$结尾,即LF结尾。因此如果在windows下编辑的shell脚本如果没有选对正确的格式就会出现很诡异的现象,甚至不能运行。
查看文件类型
可以使用file命令进行查看:
file 1.sh
1.sh: Bourne-Again shell script, ASCII text executable, with CRLF line terminators
可以看到,脚本是以CRLF换行的。
如果直接执行就会发现,无法找到解释器,发现解释器的后面还加了一个^M:
./1.sh
bash: ./1.sh: /bin/bash^M: 解释器错误: 没有那个文件或目录
直接使用bash -x查看执行过程:
bash -x 1.sh
+ a=$'linux123124124124'
+ echo $'linux123124124124abcdef'
abcdef23124124124
这里可以看到的字符导致输出的结果异常的。
触摸屏
解决办法
1、使用vim转换格式
vim 1.sh
在命令模式先输入
:set ff=unix
或者
:set fileformat=unix
2、使用dos2unix命令
dos2unix 1.sh
3、使用sed替换掉$
sed -i 's/$//' 1.sh
蓝色发光新技术在深空
相关推荐
linuxwcj 2020-10-21
彼岸随笔 2020-10-20
yutou0 2020-10-17
jarrygao 2020-11-02
shipinsky 2020-09-23
touchfuture 2020-09-16
hongsheyoumo 2020-09-04
momoku 2020-09-11
ruancw 2020-08-27
TuxedoLinux 2020-08-18
vvu 2020-08-16
downtown 2020-08-11
luvzhan 2020-07-28
maxelliot 2020-06-28
cuixingwudi 2020-06-25
linuxdashencom 2020-06-21
旭灿 2020-06-16
wenjieyatou 2020-06-14