2015-09-20 53 views
1

我有一个使用ffmpeg的bash脚本。我希望能够通过我的脚本一个参数,如果设置了这个参数,那么我的脚本中的ffmpeg命令会添加一个参数。我可以以编程方式在bash脚本中包含参数吗?

在它是最基本的,这就是我想要做的事:

ffmpeg \ 
# if duration flag is set for my script # 
-t $DURATION \ 
# end if # 
-rest of ffmpeg parameters... 

我知道我可以包裹在if整个事情,但ffmpeg的命令有很多其它参数的那会那么需要在两个地方保持更新。

这可能吗?

回答

1

你可以使用一个数组来存储动态参数:

if [ some test ] 
then 
    args+=(-t "$DURATION") 
fi 

ffmpeg "${args[@]}" -rest of ffmpeg parameters... 

你也可以使用,而不是在数组中的不带引号的变量这种情况下,但这不会与空白或glob字符吵架。

2

更换

-t $DURATION \ 

通过

$([[ -n "$DURATION" ]] && echo -- "-t $DURATION") \ 
+0

谢谢,这看起来像我以后,但只是为了让我明白,这里发生了什么?我还没有见过双方括号,-n或echo - 之前(很新的bash) – GusRuss89

+0

'[[...]]':根据条件表达式的评估返回true或false的状态' -n“$ DURATION”'。如果字符串不为空,'-n STRING'返回true。请参阅:'help [['和'help test' – Cyrus

相关问题