syntax error:unexpected end of file 和 bash:command not found

吃个大苦头呀。从下午一直到现在都在琢磨这个问题。晕乎呀...

刚开始不知道怎么回事ssh不能显示颜色,这给编辑带来了很大的不便,于是修改.vimrc文件,修改了自己用户名下的.vimrc还是不行于是修改/root/.vimrc,/etc/.vimrc好吧!最后还是不行,估计是吧自己目录下的.vimrc给弄残了。在网上搜了一个.vimrc的内容,在win7下编辑成txt格式的。上传到服务器再改成.vimrc格式的。这下更残了。

又出现:syntax error:unexpected end of file

好吧,继续搜索。

下面的内容来自:http://renyongjie668.blog.163.com/blog/static/1600531201172803244846/

今天在写Shell时,运行时出现了这样的错误。
git-sync-tree.sh_temp: line 111: syntax error: unexpected end of file


网上Google了一下,网上都是说从windows下脚本传到Linux上可能会出现这样的问题,是因为Windows和Linux下的行末结束符是不一样的,曾经写过一篇博客:回车与换行的区别    当然,我今天遇到的不是这种情况导致的。


1. 如果确实是这种情况,在windows下写好了Shell 但是在linux下用:
sh -n [filesName]  检查语法总是出一个错误 syntax error:unexpected end of file
原因如下:
dos文件传输到unix系统时,会在每行的结尾多一个^M,在vi的时候,当你用如下命令:
vi dos.txt
:set fileformat=unix //在这里学了一招哈...嘎嘎...
:w

就会看到这些存在于每行结尾的^M符号,这个就是产生syntax error:unexpected end of file的原因
解决方案:
在vi下把这些^M都删除后即可。
也可以使用Linux下的工具:dos2unix也可轻松将一个windows下的文本文件转化为Unix兼容的格式。


2.我遇到的不是这样由于windows和Linux相互拷贝文件而导致的。这个是语法错误嘛,由于我这个shell脚本有点大,看了一阵子也没发现是那句话语法错误了,所以不得不用二分法来查找原因,不断注释一些代码,然后用sh -n test.sh来做语法检查,直到最后找到那一段或者哪一行代码引起的错误。我发现是下面这行代码引起的,你能看出其中的问题吗?^_^
[ -d /home/repo/${SPPATH} ] || { mkdir -p /home/repo/${SPPATH}; cd /home/repo/${SPPATH}; git init >> $GITLOG 2>&1 }
嗯,其实我用花括号{}是想把几个命令组合起来在当前shell中执行,然后我犯了一个语法错误,在最后的一个命令后没有加分号(;)。将这行改为如下即可(添加一个最后的分号):
[ -d /home/repo/${SPPATH} ] || { mkdir -p /home/repo/${SPPATH}; cd /home/repo/${SPPATH}; git init >> $GITLOG 2>&1; }
关于当前shell中执行一组命令,特别要注意的是,在”{“的右边 和”}“的左边,至少要间隔一个以上的空格,而且每个命令都要以分号(;)作为结尾


看完了这位老兄的解决方法后发现忘加分号了,汗呀。好吧,这个问题解决了。又出现:bash: ./etc/.bashrc: No such file or directory

既然没有咱就查/etc/文件,发现只有bashrc没有.bashrc打开一看bashrc中的内容就是.bashrc中的内容。转换过去就OK了。

最要命的是在执行rm *** *** 命令时竟然提示

“m: invalid option --  ”

于是搜呀搜呀。有人说是路径没有添加对,于是:

在自己用户目录下 的.bash_profile添加

PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin


晕呀,一定要多看出错的提示信息呀。仔细侦查,像一个特种侦察兵呀。好吧。我现在还是个菜鸟...


今天收获颇丰...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值