1. 程式人生 > >腳本調試:一次換行符導致的報錯

腳本調試:一次換行符導致的報錯

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

腳本調試:一次換行符導致的報錯