我尝试了解以下脚本调试框架。
#!/bin/bash
_DEBUG="on"
function DEBUG()
{
[ "$_DEBUG" == "on" ] && $@
}
DEBUG echo 'Reading files'
for i in *
do
grep 'something' $i > /dev/null
[ $? -eq 0 ] && echo "Found in $i file"
done
DEBUG set -x
a=2
b=3
c=$(( $a + $b ))
DEBUG set +x
echo "$a + $b = $c"
我无法理解DEBUG功能及其用法。
我的问题是
(0)$ @是什么意思?
(1)DEBUG如何回应'阅读文件'使用$ @?
(2)如何
DEBUG set -x
a=2
b=3
c=$(( $a + $b ))
DEBUG set +x
使用$ @工作? 非常感谢你。
答案 0 :(得分:0)
$ @ 扩展传递给函数的所有参数(或bash脚本本身)
例如。如果您致电DEBUG echo "test"
,则特殊变量$@
将展开为echo "test"
。
DEBUG
函数只检查$_DEBUG
变量是否设置为"on"
。如果是,则执行作为参数传递的命令(存储到$@
变量中)
set -x
将使解释器在执行之前立即打印每个命令,这样它将帮助您了解任何时间点发生的事情。
set +x
将恢复正常行为
答案 1 :(得分:0)
(0)见man bash。 $@
是所有位置参数的列表。
(1)DEBUG echo 'Reading files'
使用两个参数echo
和Reading files
调用DEBUG。结果,echo Reading files
是calles。
(2)set +x
使bash在执行时打印命令及其参数。 DEBUG与$@
的工作方式与(1)中相同。