我有一个用于转换 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 的命令,而不是只输出到屏幕或文本文件可能会更好。
谢谢!
答案1
您可以将其添加set -x
到 bash 脚本的顶部,或者(等效地)使用以下命令运行它
bash -x yourscript
请参阅help set
或SHELL BUILTIN COMMANDS
部分man bash
:
-x Print commands and their arguments as they are executed.
更多讨论请访问如何调试 bash 脚本?在东南Unix和Linux
在这种情况下,您可能会看到$FLAGS
变量为空:它括在单引号中,因此被直接传递给bash -c
子 shell,但其中$FLAGS
未定义。
答案2
export FLAGS="-f mp4 -O --decomb=bob --loose-anamorphic --modulus 2 -e x264 -q 20 --vfr -E ac3 -6 5point1 -R 48 -B 448 --audio-fallback ac3 --encoder-preset=veryfast --verbose=1"
对我有用,感谢大家的帮助,请参阅脚本的实际操作如何安装 Handbrake 并转换递归文件树