Bash编程中不得不注意的一些细节


1. = 号赋值不能有空格:

   我们用其他语言写程序的时候,=号两边喜欢留一个空格,这是一种很好的习惯,让程序读起来舒适。但是在bash编程中,这种做法却会产生错误。

  例如:   a = 123 或 a= 123 或  a =123这些都会报错,只有a=123(等号两边无空格)才能正常执行,这一点需要非常注意。


2. if语句条件两边要加空格

  例如 if[12 -lt 13]; then 这个语句是不能正常解释的,只有写成这样的形式: if[ 12 -lt 13 ] (注意中括号与条件之间有空格)才能正常解释。


3. if条件语句后面要加分号: 

  网上很多教程在介绍bash的if语句时,基本上都套用这个模式:

if condition1 then

   dosomething

else

  dosomething

fi

 这样很容易让一些像我这样的新手弄出莫名其妙的错误。

例如笔者写了一段这样的程序:       

if [ 22 -lt 33 ]  then
    echo "22 less than 33"
else
    echo "ok"
fi

然而程序运行的状况却让笔者摸不着头脑。报出这样的错误:

[sycflash@localhost bash]$ sh if_else.sh

if_else.sh: line 12: syntax error near unexpected token `else'

if_else.sh: line 12: `else'

上网搜索了一阵才知道原来是我的if [ 22 -lt 33 ]这句后面忘了加分号,程序修改成以下形式就OK了。

if [ 22 -lt 33 ];  then        <-----------------------------注意then 前面的分号
    echo "22 less than 33"
else
    echo "ok"
fi

上面两个问题看似小事,但却会让初学者头晕脑胀。望各位读者也贴出自己曾经遇到过的麻烦,让bash编程者少走弯路。

相关内容