我有一个用于转换 Handbrake 视频的脚本,但我想进行预设。我在使用脚本时遇到问题,最后它输出类似
HandBrakeCLI -i file.avi -o file.mp4 flags
但是我无法让标志部分工作,所以为了排除故障,我想看看命令行正在接收什么作为我的脚本的翻译。
这是我的工作脚本的链接
这是我希望它看起来像的样子
仅显示更改
FLAGS="-E ac3 -6 5point1 -R 48 -B 448 --audio-fallback ac3"
if [ -z "$1" ] ; then
TRANSCODEDIR="."
else
TRANSCODEDIR="$1"
fi
find "$TRANSCODEDIR"/* -type f -exec bash -c 'HandBrakeCLI -i "$1" -o "${1%\.*}".mp4 "$FLAGS"' __ {} \;
基本上 $Flags 选项不起作用,当我弄乱它时要么找不到文件,要么找不到标志,但脚本帮助很好,但为了将来调试其他脚本我不介意知道如何只输出它“将”发送到 shell 而不是只输出到屏幕或文本文件的命令可能更好。
谢谢!
您可以添加
set -x
到 bash 脚本的顶部或(等效地)使用运行它请参阅
help set
或SHELL BUILTIN COMMANDS
部分man bash
:在如何调试 bash 脚本中有更多讨论?在SE Unix 和 Linux上
在这种情况下,您可能会看到该
$FLAGS
变量为空:它用单引号引起来,因此按字面意义传递给bash -c
子 shell,其中$FLAGS
未定义。为我工作,感谢帮助人员,请参阅如何安装 Handbrake 和转换递归文件树的脚本