在Bash脚本中,我需要将执行结果保存在变量中:
expr $(date +%s) - $(date +%s -r $videoName)
执行此命令的结果应该返回实际日期和视频编辑日期之间的差异(以秒为单位)。
我的第一个想法是这样的,但是不起作用:
differenceInSeconds=$(expr $(date +%s) - $(date +%s -r $videoName))
任何帮助?
谢谢,
答案 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