Bash 为什么减法返回符号
我有一个简单的减法问题,但我不明白是什么错了 我的代码:Bash 为什么减法返回符号,bash,shell,Bash,Shell,我有一个简单的减法问题,但我不明白是什么错了 我的代码: 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 - 我的问题是:为什么我得到了一个符号返回 您没有为变量赋值等号周围不能有空格。 而
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 -
我的问题是:为什么我得到了一个符号返回 您没有为变量赋值等号周围不能有空格。 而且,你做错了
start=$(date +%s%N | cut -b1-13)
命令:
a= b
(注意空格)将在运行命令b
时将a
设置为空字符串。这是一种为单个命令临时设置环境变量的方法,例如:
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
临时设置为nothing,并运行date
命令。因此,当您使用它们时,start
和end
仍然是空的,这就是为什么您只得到-
,因为expr-
只给您-
如果要将date
命令的结果输入变量,请使用:
start=$(date +%s%N | cut -b1-13)
感谢您的解释。您的开始时间和结束时间显示在屏幕上,而您没有打印它们,这一事实应该提醒您,作业中出现了一些错误。