gpt4 book ai didi

bash - bash 脚本中的算术问题

转载 作者:行者123 更新时间:2023-11-29 09:26:47 25 4
gpt4 key购买 nike

我正在尝试使用 FFMpeg 将视频剪切成 2 分钟的片段。我正在使用 Ubuntu 10.10。

这是我的代码:

#!/bin/sh
COUNTER=0
BEG=0
MIN=`ffmpeg -i ${1} 2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,// | cut -d ":" -f 2`
echo $MIN
((MIN=MIN-2))
before_last_dot=${1%.*};
while [ $COUNTER -lt $MIN ]; do
((BEG=COUNTER*60))
echo "MIN:${MIN}"
echo "ffmpeg -sameq -i ${1} -ss ${BEG} -t 120 ${before_last_dot}.${COUNTER}.wmv"
((COUNTER=COUNTER+2))
done

echo "ffmpeg -sameq -i ${1} -ss ${BEG} -t 120 ${before_last_dot}.${COUNTER}.wmv" 应该是 ffmpeg -sameq -i ${1} -ss ${BEG} -t 120 ${before_last_dot}.${COUNTER}.wmv。我打印它来检查它。 ${1} 是视频名称。

但问题是,((COUNTER=COUNTER+2))((COUNTER+=2)) 永远不起作用! COUNTER 始终为 0,BEG 也始终为 0。 ((MIN=MIN-2)) 也从不工作。

我尝试用 let "MIN-=2" 替换 ((MIN=MIN-2)) 我收到一个错误:let: not found

我已经仔细检查过,但仍然不知道为什么。我的头发都白了。

最佳答案

您使用的 ((MIN=MIN-2)) 语法是 bash 特定的功能。

我没有 Ubuntu 10.10 可以用来测试,但我猜你的 /bin/sh 不是 bash,而是一个更小更简单的shell 仅具有 POSIX 所需的基本功能。 (在这种情况下,((MIN=MIN-2)) 可能启动一个子 shell,它启动一个子 shell,它除了设置一个变量 MIN 什么都不做到字符串 MIN-2 然后退出。)

尝试在第一行使用 #!/bin/bash

关于bash - bash 脚本中的算术问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com