0

我对简单的减法有疑问,但我不明白出了什么问题。

我的代码:

start= date +%s%N | cut -b1-13
#Treatment...
end= date +%s%N | cut -b1-13

delta=`expr $end - $start`
echo "delta $delta"

我的控制台显示:

  1374652348283
  ...
  1374652349207
  delta -

我的问题是:为什么我得到一个 - 符号返回?

4

2 回答 2

10

命令:

a= b

(注意空格)a在运行命令时将设置为空字符串b。这是一种为单个命令临时设置环境变量的方法,例如:

PATH=/path/to/somwhere gcc whatever  # Here, PATH has the modified value.
echo $PATH                           # Here, PATH has its original value.

所以命令行:

start= date +%s%N | cut -b1-13

start暂时设置为空并运行date命令。因此,当你使用它们时,startend仍然是空的,这就是为什么你只得到-,因为expr -只是给你-

如果要将date命令的结果放入变量中,请使用:

start=$(date +%s%N | cut -b1-13)
于 2013-07-24T08:12:56.533 回答
5

您没有分配给变量。等号周围不能有空格。

另外,你做错了。

start=$(date +%s%N | cut -b1-13)
于 2013-07-24T08:09:22.710 回答