保存bash变量结果

时间:2014-09-17 23:11:29

标签: bash variables

在Bash脚本中,我需要将执行结果保存在变量中:

expr $(date +%s) - $(date +%s -r $videoName)

执行此命令的结果应该返回实际日期和视频编辑日期之间的差异(以秒为单位)。

我的第一个想法是这样的,但是不起作用:

differenceInSeconds=$(expr $(date +%s) - $(date +%s -r $videoName))

任何帮助?

谢谢,

1 个答案:

答案 0 :(得分:0)

我上面编辑了包含来源。这在另一个问题中得到了很好的解决。如果你使用过这个问题,你应该在你的问题中引用它。


在Linux中,date -r文件打印上次修改文件的日期:

date +%s -r file.txt

要打印自上次修改后经过的秒数,您可以使用当前日期(以秒为单位)减去上次修改日期的expr:

expr $(date +%s) - $(date +%s -r file.txt)

在Mac OS X(日期的BSD风格)中,这不会起作用,你需要使用stat来指出其他答案。

echo $(( $(date +%s) - $(stat -f%c myfile.txt) ))

作为使用文件名调用的函数:

lastmod(){
     echo "Last modified" $(( $(date +%s) - $(stat -f%c "$1") )) "seconds ago"
}

唯一可能搞砸的是你的变量$ videoName或者如何将它保存为变量。这就是我在Mac上没有问题的方法(01_movie.flv是我的一个随机视频文件):

#!/usr/bin/env bash

videoName=01_movie.flv
time=`echo $(( $(date +%s) - $(stat -f%c $videoName) ))`
echo $time

打印到终端:

956680