我想在几秒钟内完成shell脚本的执行。
我的实施:
#!/bin/sh
START=$(date +%s)
echo $START
.
.
bla bla bla
.
.
.
END=$(date +%s)
echo $END
DIFF=($END - $START)
echo "Time difference is "$DIFF
这显示了END时间而不是差异。 我无法猜出为什么减号不起作用。
答案 0 :(得分:2)
假设您正在使用bash
:
你需要使用双重parens在shell中进行算术运算:
((DIFF = START - END))
#or
DIFF=$((START - END))
请注意,您不必使用美元符号来读取double parens中的变量。
答案 1 :(得分:1)
算术需要美元双括号:
DIFF=$(($END - $START))
如:
#!/bin/bash
START=$(date +%s)
echo $START
sleep 2
END=$(date +%s)
echo $END
DIFF=$(($END - $START))
echo "Time difference is" $DIFF
Bash参考手册说:
3.5.5算术扩展
算术扩展允许评估算术表达式和替换 结果。算术扩展的格式为:
$(( expression ))
表达式被视为双引号内,但内部是双引号 括号不予特别处理。表达式中的所有标记都经过参数扩展, 命令替换和引用删除。算术扩展可以嵌套。
3.2.4.2条件构造
((...))
(( expression ))
根据下述规则评估算术表达式(参见Shell Arithmetic)。如果表达式的值不为零,则返回状态为0;否则返回状态为1.这完全等同于
let "expression"
有关let builtin的完整描述,请参阅Bash Builtins。