操作系统: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)并通过输入完整路径来运行。