如何从源 bash 脚本运行调试模式?

如何从源 bash 脚本运行调试模式?

我目前有两个文件,一个是主函数,另一个是核心逻辑。 main 函数像函数一样获取了代码逻辑和访问权限。但是我的问题在代码逻辑上有问题,如何在调试模式下查看它?下面是一个例子。

代码逻辑

function logic() {
    #!/bin/bash
     if [[ -f /tmp/sample.txt ]]; then
        echo "hello world"
     fi
}

主函数文件

#!/bin/bash
if [[ -f /tmp/test.txt ]] ; then
      logic
      echo "Done"
fi

执行输出时:

sh -x myscript.sh

++ [[ -f /tmp/test.txt ]]
hello world      ## I need debug output here itself.
++ echo "Done"

答案1

我们应该在调用文件的函数之前获取该文件。

#!/bin/bash
source /path/to/codeLogic.sh
if [[ -f /tmp/test.txt ]] ; then
      logic
      echo "Done"
fi

然后在调试模式下运行:

sh -x myscript.sh
+ source /path/to/codeLogic.sh
+ [[ -f /tmp/test.txt ]]
+ logic
+ [[ -f /tmp/sample.txt ]]    ---> this is the execution part of logic function
+ echo 'hello world'
hello world
+ echo Done
Done

相关内容