【问题标题】:Saving bash variable result保存 bash 变量结果
【发布时间】:2014-09-17 23:11:29
【问题描述】:

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

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

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

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

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

有什么帮助吗?

谢谢,

【问题讨论】:

  • “不工作”是什么意思?有任何错误信息吗?出乎意料的结果?
  • 你的意思是它不工作?它产生了什么价值?

标签: bash variables


【解决方案1】:

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


在 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 2018-08-10
    • 2017-12-08
    • 1970-01-01
    相关资源
    最近更新 更多