J'utilise l'outil FPM pour créer un package .deb. Cet outil crée avant/après la suppression du package des fichiers pris en charge.
Malheureusement, le script bash généré par FPM contient une telle fonction
dummy() {
}
Et ce script se termine avec une erreur:
Erreur de syntaxe, inattendue
BASH n'autorise pas les fonctions vides? Quelle version de bash/linux a cette limitation?
Vous pouvez utiliser :
qui équivaut à true
et est principalement utilisé comme opérateur ne rien faire ...
dummy(){
:
}
Une fonction bash vide peut être illégale. La fonction contient uniquement des commentaires sera également considérée comme vide.
un ":" (commande null) peut être placé dans la fonction si vous voulez "NE RIEN FAIRE"
Une doublure
dummy(){ :; }
:
est la commande null
;
est nécessaire dans le format d'une ligne
Je recommande celui-ci:
dummy(){ unused(){ :;} }
Si tu utilises :
commande null, elle sera imprimée par l'option xtrace:
(
set -o xtrace
dummy(){ :; }
dummy "null command"
)
echo ------
(
set -o xtrace
dummy(){ unused(){ :;} }
dummy "unused function"
)
production:
+ dummy 'null command'
+ :
------
+ dummy 'unused function'
Pour le débogage, j'utilise un wrapper comme celui-ci:
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
# ..