我正在使用FPM工具来创建.deb包。此工具在从支持的文件中删除包之前/之后创建。
不幸的是,FPM生成的bash脚本包含这样的功能
dummy() {
}
这个脚本退出时出错:
语法错误:“}”意外
BASH不允许空函数吗?哪个版本的bash / linux有此限制?
您可以使用相当于:
的true
,并且主要用作无操作符...
dummy(){
:
}
空的bash函数可能是非法的。函数只包含注释也会被认为是空的。
一个“:”(空命令)可以放在函数中,如果你想“做什么”
一个班轮
dummy(){ :; }
:
是null命令
一行格式需要;
我推荐这个:
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
# ..