0

我有一个shell程序如下:

#!/bin/sh
a=1
b=2
c=`expr $a+$b`      
echo $c

输出是1+2

但如果我改变

c=`expr $a+$b\`

c=`expr $a + $b`

输出将是 3。

我想知道这里的空间有什么用。

4

1 回答 1

2

expr是一个 shell 命令,需要两种类型的参数:操作数(“数字”)和运算符(+、-、* 等)。在您的情况下,您希望将三个参数传递给expr,它们是 $a、+ 和 $b。美元符号值由您的 shell 扩展为它们的实际值 1 和 2,而不是由expr. 所以,当你这样做时expr $a + $b,实际的 shell 命令是expr 1 + 2,它给你 3。

当您不输入空格时,执行的是expr 1+2. 该expr程序不知道如何处理1+2它的唯一参数,因此只是原封不动地回响它。

于 2012-12-27T08:11:51.303 回答