恼人的bash语法,关于空格

刚刚开始学习bash,简单的脚本也看懂了,模仿着写,怎么都不对阿。。。

总是这样的错误:

syntax error near unexpected token `then'

if[ 1 -ne 1 ]: command not found

syntax error: unexpected end of file

让我一一道来:

第一个和第二个是一样的错误,都是因为恼人的空格引起的,bash对空格的要求很严格,在“if”与“ [ ”之间,“[ ”与变量之间必须有空格......

第三个问题是,文件结尾的问题,原因基本有二,一是检查各条件于循环的结束,if与fi,do与done,begin与end要成对出现,如果只用了if但是没有fi,就会提示这样的错误;

二是dos文件传输到unix系统时,会在每行的结尾多一个^M,在vi的时候,当你用如下命令:
>>vi dos.txt
>>:set fileformat=unix
>>:w
就会看到这些存在于每行结尾的^M符号,然后把^M删除就可以了

在百度空间里看到一篇文章写的很清晰,帮我大忙,贴在这里,供大家参考


以下内容转自:http://hi.baidu.com/zdl1016/blog/item/4d7625238ae57348925807bd.html

举例如下:
1:
定义变量时, =号的两边不可以留空格.
eg:
gender=femal------------right
gender =femal-----------wrong
gender= femal-----------wrong
2
条件测试语句 [ 符号的两边都要留空格.
eg:
if [ $gender = femal ]; then-------right.
     echo "you are femal";
fi

if[ $gender...-----------------------wrong
if [$gender...----------------------wrong.

3
条件测试的内容,如果是字符串比较的话, 比较符号两边要留空格!
eg:
if [ $gender = femal ]; then-------right.
if [ $gender= femal ]; then--------wrong.
if [ $gender=femal ]; then---------wrong.

4
如果if 和 then写在同一行, 那么,注意, then的前面要跟上 ; 号.
如果 then 换行写, 那么也没问题.
eg:
if [ $gender = femal ]; then-------right.
if [ $gender = femal ]
     then-------------------------------right.
if [ $gender = femal ] then-------wrong. then前面少了 ; 号.
提示出错信息:
syntax error near unexpected token then
同理,还有很多出错信息 比如
syntax error near unexpected token fi 等都是这样引起的.

5
if 后面一定要跟上 then. 同理
elif 后面一定要跟上 then.
不然提示出错信息:
syntax error near unexpected token else


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值