我正在尝试检查脚本,如果该脚本是使用-x标志执行的,这是用于shell脚本的调试。 有没有办法检查脚本本身是否设置了-x。 我想有条件地检查并做一些事情,如果设置的话。
答案 0 :(得分:10)
使用:
if [[ $- == *x* ]]; then
echo "debug"
else
echo "not debug"
fi
来自Bash manual:
($ - ,连字符。)扩展到调用时指定的当前选项标志,set builtin命令或shell本身设置的那些(例如-i选项)。
答案 1 :(得分:2)
执行此操作的可移植方式(没有像[[ ]]
这样的基本原理)将是
case $- in
(*x*) echo "under set -x"
esac
答案 2 :(得分:2)
您可以捕获DEBUG信号,如下所示:
trap "do_this_if_it_is_being_debugged" DEBUG
function do_this_if_it_is_being_debugged() {
...
}
请注意,这需要在执行set -x
之前执行
答案 3 :(得分:0)
在xtrace
中查找$SHELLOPTS
。
例如:
if grep -q xtrace <<<"$SHELLOPTS"; then
DO_SOMETHING;
fi