linux和windows下换行符引起的报错——dos2unix转换

有时候由于有的代码太长,显示的时候看着很不舒服,所以在编写的时候会加上\再换行,这个是转义字符(转义字符还是编译字符??我对这个不是很了解。。。),到时候会把换行符给变成空格(我也不知道这个描述对不对,大概意思就是告诉编辑器我这里不需要换行,你帮我换回来)

# 下面这段代码
for i in $(ls /home/xxx/workspace/xxx/xxx/data/*_1.fastq.gz); do j=`basename $i`;
echo "kneaddata -i1 ${i} -i2 ${i%%_1.fastq.gz}_2.fastq.gz \
-o /home/xxx/workspace/xxx/xxx/output/ -v -t 40 --remove-intermediate-output \
--trimmomatic /home/xxx/software/Trimmomatic-0.38 \
--trimmomatic-options 'ILLUMINACLIP:/home/xxx/software/Trimmomatic-0.38/adapters/TruSeq2-PE.fa:2:40:15 \
SLIDINGWINDOW:4:20 MINLEN:50' \
--bowtie2-options '--very-sensitive --dovetail' \
-db /home/xxx/Publicdata/genome/mouse/mouse_GRCm39" > /home/xxx/workspace/xxx/xxx/pbs/${j%%_1.fastq.gz}.pbs;done

# 要注意,上面那段代码如果直接从记事本贴过去,很可能\后面接的是windows下的换行符(即是\r\n),而linux下的换行符应该为\n,生成的代码可能就会多出来一些换行符
# 所以需要用notepad打开看一下是不是CRLF结尾,如果是,在linux里直接运行这段命令就会报错
# 在windows下打开的文件,换行符会变成\r\n

# 解决办法:
# 1.vi一个sh文件,把命令贴进去,再保存
# 一般这个时候再用notepad打开就是\LF结尾的了 这时再运行这个sh文件或者直接复制放到命令行里运行都是没问题的了
# 2.如果打开还是\CRLF,就使用
dos2unix oldfile newfile
# 或者
dos2unix thefile #将其转换一下就好了

下面是不标准的

下面的LF在linux里运行才不会有问题

posted @ 2023-03-29 13:31  元元堂随笔  阅读(73)  评论(0编辑  收藏  举报