bash的赋值操作是不允许操作符前后有空格的,因为空格在bash编程中是一个关键字符。
你说的有时一定要空格这个我不大清楚,但是有一个表达式运算印象比较深刻:
a=1
b=2
c=`expr $a + $b`
c的赋值表达式expr后的加号必须要有空格,不然会被解释为字符操作,所以这时:
echo $c
会打出3
但是c=`expr $a+$b`
echo $c
会打出1+2
赋值表达式操作符前后不能有空格:
var=10
var=`cat file.txt`
let ret=var+1
对于let命令,后面的运算符前后可以有空格,但需将整个运算表达式置于双引号中:
let ret="var + 1"
下面几种情况一定要有空格。
1)判断表达式
方括号与其中的判断表达式之间,比较操作符前后都一定要有空格。
if [ $var -eq 10 ]; then
2)expr运算表达式
expr $var + $ret
这里列的也不一定全,因为Linux的很多东西是需要靠实践来摸索的,没有定律。