脚本调试:一次换行符导致的报错

简介:

今天早上用notepad写了个简单脚本,如下:

1
2
3
4
5
6
7
[root@master ~] # vim /wanwan/nginx_limits.sh 
#!/bin/bash
#nginx max open files-nums
for  pid  in  $( ps  aux | grep  nginx| grep  - v  grep  | awk  '{print $2}' )
do
cat  /proc/ ${pid} /limits  grep  'Max open files'
done

调试的时候居然报错,如下:

1
2
3
[root@master ~] # bash /wanwan/nginx_limits.sh 
'wanwan /nginx_limits .sh: line 4: syntax error near unexpected token ` do
'wanwan /nginx_limits .sh: line 4: ` do

突然想到,可能是因为在windows下编辑的额,继续排查

wKioL1m3N0jAoT_ZAAAlUCrlbQ4537.png

使用vim -b进行编辑,发现文件每一行后面都多了一个

解决方法:

1
2
3
4
5
6
7
在Vim中解决这个问题,很简单,在Vim中利用替换功能就可以将“^M”都干掉,键入如下替换命令行:
  1) vi  -b setup.sh
  2)在命令编辑行<就是: 按ESC键 然后 shift +:冒号>输入:%s/^M //g
  注意:上述命令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+ v ”、“Ctrl+M”键生成
  这样替换掉以后,保存就可以执行了。当然还有其他的替换方式比如:
  a.一些linux版本有 dos2unix 程序,可以用来祛除^M。
  b. cat  filename1 |  tr  -d  "/r"  > newfile 去掉^M生成一个新文件

再次查看文件的信息:

wKiom1m3OUaCMuSJAAAsPE-8Ls0494.png

我们发现换行符已经没有了,执行下脚本:

wKioL1m3OWGiu5N5AAAhoBDmbXA005.png

到此,完成











本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1964504,如需转载请自行联系原作者
目录
相关文章
|
8月前
|
Shell
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
Shell VSCode 基本开发插件(语法提示、错误检测、格式化、运行代码)
430 0
|
XML Shell 应用服务中间件
使用shell脚本实现在指定文件中,指定行号写入指定内容
使用shell脚本实现在指定文件中,指定行号写入指定内容
841 0
使用shell脚本实现在指定文件中,指定行号写入指定内容
|
Shell
shell脚本一行太长,使用\换行
shell脚本一行太长,使用\换行
220 0
|
Shell
SHELL下去掉变量中的回车换行
SHELL下去掉变量中的回车换行
301 0
|
Shell Python
shell脚本中执行python脚本,处理字符串,同时复制到剪贴板
shell脚本中执行python脚本,处理字符串,同时复制到剪贴板
|
Shell Perl
【shell】正则表达式、正则常用命令、流编辑器
文章目录 前言 一、内容概述 二、正则元字符 2.1 基础表达式 2.2 扩展表达式 三、搭配命令
85 0
【shell】正则表达式、正则常用命令、流编辑器
|
存储 缓存 Shell
Bash 的基本功能:别名、快捷键、历史命令、输出重定向、管道符、Shell中特殊符号
一、命令别名 1. 命令生效的顺序 执行使用绝对路径或相对路径执行的命令 执行别名 执行Bash内部命令 执行按照 $PATH 环境变量定义的目录顺序查找到的第一个命令 2. 查看别名 命令格式
关于编写shell脚本中的空格使用解读
最近用到了开机自启动脚本,接触到了shell脚本的编写,对其中的空格使用方法产生了疑问,以下是我的见解
|
人工智能 Shell
Shell脚本编程小技巧(1)-如何解决脚本中多行重定向结束符不用对齐到行首
参考资料 https://blog.csdn.net/ccwwff/article/details/48519119 1、what?问题需求是什么? 首先需求从何而来呢,主要是编写shell脚本,用cat 进行多行输入重定向的时候,结束符必须要对齐行首,格式不好看。
808 0