故障排除脚本:想要查看 CLI 的命令输出

故障排除脚本:想要查看 CLI 的命令输出

我有一个用于转换 Handbrake 视频的脚本,但我想制作预设。我在使用该脚本时遇到了麻烦,最后它输出的内容类似于

    HandBrakeCLI -i file.avi -o file.mp4 flags

但我无法使标志部分工作,因此为了排除故障,我想看看命令行接收的是我的脚本的翻译。

这是我的工作脚本的链接

如何安装 Handbrake 并转换递归文件树

以下是我希望它的样子

仅显示更改

    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 setSHELL 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 并转换递归文件树

相关内容