RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1603218
Accepted
Роман
Роман
Asked:2024-12-24 04:18:38 +0000 UTC2024-12-24 04:18:38 +0000 UTC 2024-12-24 04:18:38 +0000 UTC

在bash中执行命令,将其写入变量

  • 772
time = exec "ffprobe -i /video.mp4 -show_entries format=duration -v quiet -of csv='p=0'"

echo ${time}

此命令返回视频的持续时间。问题是。如何执行命令并将其返回值存储在变量中?

ffmpeg -i /video.mp4 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print  \$NF }' | tail -1

我就是这样得到的

crop=*:*:*:*

问题是,是否可以将持续时间值与作物一起获取。并将作物和时间分别分成两个变量?

bash
  • 1 1 个回答
  • 37 Views

1 个回答

  • Voted
  1. Best Answer
    Vitalizzare
    2024-12-24T11:55:39Z2024-12-24T11:55:39Z

    如何执行命令并将其返回值存储在变量中?

    为了保存程序发送到标准输出设备的数据,我们使用x=$(command ...) or (我们用反引号x=`command ...`包围命令)。等号两边不能有空格,否则会被解释为试图运行程序而不是给变量赋值。

    如何将作物检测中的持续时间和作物提取到变量中?

    您正在尝试从命令结果中提取时间和作物:

    ffmpeg -i video.mp4 -vf cropdetect -f null - 2>&1
    

    为此,请使用最后一帧处理行,如下所示:

    [Parsed_cropDetect_0 @ 0x55737988da80] x1:0 x2:1919 y1:0 y2:1079 w:1920 h:1072 x:0 y:4点:7908 t:0.514844作物= 1920:1072:0:4
    

    时间和作物位于表格行尾t:0.514844 crop=1920:1072:0:4。因此,awk我们打印的不是一个字段,而是最后两个字段:awk '/crop/ {print $(NF-1), $NF}'。或者我们不输出它,而是将其保存在两个变量中,最后打印:

    awk '/crop=/ {time=$(NF-1); crop=$NF} 
         END {print substr(time, 3), substr(crop, 6)}'
    

    在这里,这是从位置开始的substr(x, n)行的一部分(编号从一开始)。也就是说,该命令可能如下所示:xn

    data=$(ffmpeg -i video.mp4 -vf cropdetect -f null - 2>&1 | 
           awk '/crop=/ {time=$(NF-1); crop=$NF} 
                END {print substr(time, 3), substr(crop, 6)}')
    time=$(echo $data | cut -d' ' -f1)
    crop=$(echo $data | cut -d' ' -f2)
    

    在最后两行中,我们data除以空格并将左/右边界分配给变量time和crop。但是,由于我们正在工作bash并且只有 2 个字段,因此我们可以通过用空格截断后缀和前缀来实现此目的:

    time=${data% *}
    crop=${data#* }
    

    此外,我们可以将其声明data 为关联列表,并以定义它时可以使用的格式传递数据。它可能看起来像这样:

    eval declare -A data=(`ffmpeg -i video.mp4 -vf cropdetect -f null - 2>&1 | 
                           awk '/crop=/ {time=$(NF-1); crop=$NF} 
                                END {print "[time]=" substr(time, 3),
                                           "[crop]=" substr(crop, 6)}'`)
    

    您可以使用命令查看内容declare -p data。提取值:${data[time]}, ${data[crop]}

    • 2

相关问题

  • Shell/Bash 中有常量吗?

  • 使用 grep、sed、awk 查找单词

  • 删除 docker 镜像后的消息

  • 打印到不包含的 shell 行

  • 计算规则中的值

  • sudo 命令在 Windows 上的 Git Bash 中不起作用 [关闭]

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5