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

简介:

今天早上用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,如需转载请自行联系原作者
目录
相关文章
|
机器学习/深度学习
电磁兼容EMC理论基础汇总
电磁兼容EMC理论基础汇总
533 0
|
NoSQL openCL Linux
Linux调试工具—gdb
Linux调试工具—gdb
|
4月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?阿里云4核8g服务器1个月和1小时最新价格参考
现在阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享,热门ECS实例及CPU处理器型号说明,2025年最新阿里云4核8G服务器配置价格,热门ECS实例、CPU型号及参考价格整理,云服务器ECS实例规格不同费用价格也不同,经济型e实例4核8G配置159元1个月、一年价格1578元一年、按小时收费0.45元1小时,云服务器ECS计算型c9i实例4核8G配置费用371元1个月、一年7.1折优惠3327元一年,阿里云ECS云服务器4核8G配置价格表,包括1个月、一年和1小时收费:
|
C# 图形学
unity抛物线的制作
该教程展示了如何在Unity中使用LineRenderer组件和C#脚本绘制抛物线。具体步骤如下:创建一个空物体并添加LineRenderer组件,挂载提供的`SeletParabola`脚本;新建两个Cube作为起点和终点,并将其拖到脚本对应的公共变量上。运行后即可看到从起点到终点的抛物线效果。代码通过计算抛物线上的点并设置给LineRenderer来实现这一效果。此外,还可以为LineRenderer添加贴图以增强视觉效果。
|
人工智能 Linux 文件存储
旧台式电脑的 10 种用途
旧台式电脑的 10 种用途
1071 14
|
JavaScript 前端开发 算法
前端优化之超大数组更新:深入分析Vue/React/Svelte的更新渲染策略
本文对比了 Vue、React 和 Svelte 在数组渲染方面的实现方式和优缺点,探讨了它们与直接操作 DOM 的差异及 Web Components 的实现方式。Vue 通过响应式系统自动管理数据变化,React 利用虚拟 DOM 和 `diffing` 算法优化更新,Svelte 通过编译时优化提升性能。文章还介绍了数组更新的优化策略,如使用 `key`、分片渲染、虚拟滚动等,帮助开发者在处理大型数组时提升性能。总结指出,选择合适的框架应根据项目复杂度和性能需求来决定。
786 2
|
JavaScript 前端开发 开发者
Vue3:快速生成模板代码
Vue3:快速生成模板代码
字符编码问题之GB2312编码扩充到包括更多汉字和生僻字的如何解决
字符编码问题之GB2312编码扩充到包括更多汉字和生僻字的如何解决
476 0
|
机器学习/深度学习 人工智能 计算机视觉
深度学习之ResNet家族
ResNet是深度学习中的标志性架构,由何恺明在2016年提出,解决了深度网络训练的难题。ResNet通过残差块使得网络能有效学习,即使层数极深。后续发展包括ResNetV2,优化了信息传递和激活函数顺序;Wide Residual Networks侧重增加网络宽度而非深度;ResNeXt引入基数概念,通过多路径学习增强表示能力;Stochastic Depth通过随机丢弃层加速训练并提升泛化;DenseNet采用密集连接,增加信息交互;DPN结合ResNet和DenseNet优点;ResNeSt则综合了注意力机制、多路学习等。这些演变不断推动深度学习网络性能的提升。5月更文挑战第7天
1182 7

热门文章

最新文章

下一篇
开通oss服务