如何正确在Linux Shell脚本中定义一个时间变量?

我有一个Shell脚本,从开始执行到结束是需要花费一定的时间的。我现在想记录这个具体的时间段。如下脚本:
#!/bin/bash
LOG_TIME=`date +%H:%M:%S`
echo "脚本开始时间:"$LOG_TIME
/bin/sleep 10
echo "脚本结束时间:"$LOG_TIME
exit 1
我设置中间停顿了10秒钟。
问:执行该脚本时输出到控制台的脚本开始时间和结束时间为什么是一样的?

1、创建脚本 test.sh,并入截图内容。

2、执行test.sh脚本。

3、使用用户变量,创建 test.sh 脚本,填入截图内容。

4、执行脚本输出结果。

5、命令替换将命令赋值自定义变量,可以通过反引号字符实现 。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-26
后面echo之前把下面这行再执行一遍不就行了:
LOG_TIME=`date +%H:%M:%S`
这只是一个变量而已,你不给他赋值他怎么会自己变化呢?追问

定义一个变量,当然就是为了方便一处定义下面多处调用啊,如果下面再执行一遍那么定义这个变量就似乎没有意义了。
难道LOG_TIME第一次执行之后就变成了一个常量,而下面调用的时候就只获取这个常量,而不是获取当前的`date +%H:%M:%S`?

追答

大哥,你连变量和常量的区别都没有搞清楚。。
看一下你这个脚本的逻辑:
#!/bin/bash
LOG_TIME=`date +%H:%M:%S` # 取出当前的时间值,赋值给变量LOG_TIME
echo "脚本开始时间:"$LOG_TIME # 打印一下该变量的值
/bin/sleep 10 # 暂停10秒
echo "脚本结束时间:"$LOG_TIME # 再打印一下该变量的值
exit 1

你只是将一个变量的值打印了两遍,中间又没有修改变量的值,两次打印的结果为什么要不一样呢?

追问

大哥,别生气,气坏身子不好啦。。。我就是有疑问啦,既然是变量两次打印应该就不一样咯,既然一样我就打个比方当作赋值后变常量。。。我现在已经将所有的更改为`date +%H:%M:%S`了。。。`date +%H:%M:%S`本身是随时可以变化的。。。有其他方法动态的调用没?

本回答被提问者采纳
相似回答