BASH中的空函数
我正在使用FPM工具创建.deb包。此工具在从支持的文件中删除包之前/之后创建 不幸的是,FPM生成的bash脚本包含这样的函数BASH中的空函数,bash,ubuntu,linux-mint,Bash,Ubuntu,Linux Mint,我正在使用FPM工具创建.deb包。此工具在从支持的文件中删除包之前/之后创建 不幸的是,FPM生成的bash脚本包含这样的函数 dummy() { } 此脚本退出时出错: 语法错误:“}”意外 BASH不允许空函数吗?哪个版本的bash/linux有这个限制?您可以使用:,它相当于true,并且是最常用的 作为不做任何事的接线员 dummy(){ : } 空的bash函数可能是非法的。只包含注释的函数也将被视为空函数 如果您想“不执行任何操作”,可以在函数中放置“:”(nu
dummy() {
}
此脚本退出时出错:
语法错误:“}”意外
BASH不允许空函数吗?哪个版本的bash/linux有这个限制?您可以使用
:
,它相当于true
,并且是最常用的
作为不做任何事的接线员
dummy(){
:
}
空的bash函数可能是非法的。只包含注释的函数也将被视为空函数 如果您想“不执行任何操作”,可以在函数中放置“:”(null命令) 请参阅:一行
dummy(){:;}
:
是空命令
代码>需要一行格式我建议这样做:
dummy(){unused(){:;}}
如果使用:
null命令,它将通过xtrace选项打印:
(
set -o xtrace
dummy(){ :; }
dummy "null command"
)
echo ------
(
set -o xtrace
dummy(){ unused(){ :;} }
dummy "unused function"
)
输出:
+ dummy 'null command'
+ :
------
+ dummy 'unused function'
对于调试,我使用如下包装:
main() {(
pwd # doing something in subshell
)}
print_and_run() {
clear
(
eval "$1() { unused() { :; } }"
set -o xtrace
"$@"
)
time "$@"
}
print_and_run main aaa "bb bb" ccc "ddd"
# output:
# + main aaa 'bb bb' ccc ddd
# ..
考虑添加一个例子来演示如何在函数中实现这一点。您是对的,但这可能是一个更好的答案,只需稍加解释,因此您可能可以编写true
,以提高可读性。(我想不是每个人都知道或者很容易理解:
是什么。)空格a也是必需的dummy(){:;}
将不起作用。有关这是语法错误的原因,请参阅