ffmpeg仅在shell脚本中运行时出现语法错误。为什么?

时间:2017-12-10 03:36:09

标签: linux bash shell ffmpeg raspbian

操作系统:Raspbian

我目前正在开发一个bash脚本,它将当前目录中的所有.AVI视频合并到一个.AVI文件中。当我直接在终端中运行时,我发现以下内容对我来说非常适合:

ffmpeg -f concat -safe 0 -i <(find . -name '*.avi' -printf "file '$PWD/%p'\n") -c copy "$(date -d '-1 day' +'%F')".avi

这很好用,我找到了当前目录中列出的新.AVI文件(日期名称来自昨天)。

现在,当我将同样的命令添加到我的脚本(merge.sh)时,我得到以下输出:

/home/pi/Documents/MotionScripts/merge.sh: 11: 
/home/pi/Documents/MotionScripts/merge.sh: Syntax error: "(" unexpected

这令人沮丧。是的,前面的ffmpeg命令在第11行。脚本导航到存储多个.avi文件的正确目录。

以下是整个脚本:

#!/bin/bash

#This script combines multiple AVI files within the current directory, into one long video

cd /media/myBook/Security/yesterday

sudo mv * /home/pi/Videos/tempconversion

cd /home/pi/Videos/tempconversion

ffmpeg -f concat -safe 0 -i <(find . -name '*.avi' -printf "file '$PWD/%p'\n") -c copy "$(date -d '-1 day' +'%F')".avi

sudo mv "$(date -d '-1 day' +'%F')".avi /media/myBook/Security/yesterday

sudo rm -f *

为什么只有在可执行脚本中发出相同命令时才会出现语法错误?

解决!不应该使用'sh'来运行脚本。确保脚本是可执行的(sudo chmod + x merge.sh)并通过输入完整路径来运行。

0 个答案:

没有答案