[Linux]请教关于bash程序中操作符两边的空格问题

2024年11月30日 05:40
有2个网友回答
网友(1):

bash的赋值操作是不允许操作符前后有空格的,因为空格在bash编程中是一个关键字符。
你说的有时一定要空格这个我不大清楚,但是有一个表达式运算印象比较深刻:
a=1
b=2
c=`expr $a + $b`
c的赋值表达式expr后的加号必须要有空格,不然会被解释为字符操作,所以这时:
echo $c
会打出3
但是c=`expr $a+$b`
echo $c
会打出1+2

网友(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的很多东西是需要靠实践来摸索的,没有定律。