Linux shell脚本中调试函数的含义

Linux shell脚本中调试函数的含义,linux,bash,shell,Linux,Bash,Shell,我不熟悉shell脚本,并看到了一种添加调试函数以启用脚本调试的方法 #!/bin/bash function DEBUG() { [ "$_DEBUG" == "on" ] && $@ || : } for i in {1..6}; do DEBUG echo $i done echo "Script executed" 我不太明白调试函数中的&&$@| |:是用来做什么的?$@在这个上下文中扩展到函数参

我不熟悉shell脚本,并看到了一种添加调试函数以启用脚本调试的方法

#!/bin/bash   
function DEBUG()   
{   
  [ "$_DEBUG" == "on" ] && $@ || :   
}   
for i in {1..6};   
do   
    DEBUG echo $i   
done   
echo "Script executed"   

我不太明白调试函数中的
&&$@| |:
是用来做什么的?

$@在这个上下文中扩展到函数参数,使用更好的语法“$@”来避免拆分包含空格的参数

例如:

DEBUG echo hello

$@ => echo hello
只有当_DEBUG变量等于“on”时,才会执行此代码

command1和&command2
command2仅在command1的返回状态为success(=0)时执行

command1 | | command2
command2仅在command1的返回状态为失败(0)时执行

||:
如果调试变量未处于“开”状态或命令返回状态0,则它不执行任何操作
,因此
|:
无效,它的操作与不在此处时相同

: is a shell builtin which does nothing

“$@扩展到此上下文中的函数参数”,很抱歉,我不太明白这一点,为什么需要在该函数中执行此操作?函数正在执行此操作,以回答为什么需要注释或specsecho$i是调试函数的参数?如果是这样,我可以理解为什么$@这个调试函数只允许在“_DEBUG”变量设置为on时执行代码;因此,当_DEBUG=on时,
echo$i
被执行,否则它什么也不做