sh、bash 等都有一个-x
标志,可以显示脚本中正在执行的每个命令。这对于调试来说很方便。
$ sh -x my_script.sh
+ case $SOMETHING_DIR in
+ unset SOMETHING_SCRIPT_SOURCE
+ something_process_parameters
+ local SOMETHING_AUTO_MODE
+ SOMETHING_AUTO_MODE=use
+ something_supports_source_options
++ something_echo '[ $# -gt 0 ] && something_echo $1'
++ command printf '%s\n' '[ $# -gt 0 ] && something_echo $1'
++ . /dev/stdin yes
有没有办法做到这一点source
?
$ source my_source.sh
答案1
是的,您可以在获取点脚本之前使用set -x
(或) 在当前 shell 中启用跟踪,然后使用(或) 禁用跟踪。set -o xtrace
set +x
set +o xtrace
set -x
source ./my_source.sh
set +x
请注意,如果您源脚本设置或取消设置xtrace
shell 选项,您可能无法获得预期的输出。