shell中的空格

shell中的空格

shell中变量赋值的等号两侧是不能有空格的,这和shell解释和执行命令的逻辑有关. 可以比较一下下面这四个命令.

1
2
3
4
var=dog
var= dog
var =dog
var = dog

假如我现在定义好了两个shell函数

1
2
3
4
5
6
7
#!/bin/bash
var(){
echo calling function var, first arg is: $1, second arg is: $2
}
dog(){
echo miaomiao!
}

第一个命令相当于给var变量赋值为dog:

第二个命令相当于先执行了var变量的赋值操作,然后执行dog函数. 然而由于空格打断了赋值过程,而dog被当作了一个新的命令,因此这个赋值不起作用,var变量此时的值还是dog.

第三个命令相当于执行var函数,传给var函数'=dog'这个参数:

第四个命令相当于执行var函数,传给var函数两个参数,分别为'='和'dog':