FPMツールを使用して.debパッケージを作成しています。このツールは、サポートされているファイルからパッケージを削除する前/後に作成します。
残念ながら、FPMによって生成されたbashスクリプトにはそのような関数が含まれています
dummy() {
}
そして、このスクリプトはエラーで終了します:
構文エラー: "}"予期しない
BASHは空の関数を許可しませんか? bash/linuxのどのバージョンにこの制限がありますか?
:
これはtrue
と同等で、ほとんど何もしない演算子として使用されます...
dummy(){
:
}
空のbash関数は不正な場合があります。コメントのみを含む関数も空であると見なされます。
「何もしない」場合は、「:」(nullコマンド)を関数に配置できます。
ワンライナー
dummy(){ :; }
:
はnullコマンドです
;
は1行の形式で必要です
私はこれをお勧めします:
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
# ..