腳本調試:一次換行符導致的報錯
阿新 • • 發佈:2017-09-12
shell
今天早上用notepad寫了個簡單腳本,如下:
[[email protected] ~]# 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
調試的時候居然報錯,如下:
[[email protected] ~]# 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下編輯的額,繼續排查
使用vim -b進行編輯,發現文件每一行後面都多了一個
解決方法:
在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生成一個新文件
再次查看文件的信息:
我們發現換行符已經沒有了,執行下腳本:
到此,完成
本文出自 “冰凍vs西瓜” 博客,請務必保留此出處http://molewan.blog.51cto.com/287340/1964504
腳本調試:一次換行符導致的報錯