Les contr'apostrophes sont pleines de pièges et je crois même qu'elle sont dépréciées depuis plusieurs dizaine d'années!
backup_mysql()
{
docker-compose exec -T maria sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > $TMPDIR/dump.sql
}
echo " Backup MySQL..."
if backup_mysql; then
echo " Remove backup file...."
rm -rf "${TMPDIR:?}"
else
echo " Exit program: there was an error in the backup procedure."
exit 1
fi
La fonction permet d'expliquer ce que fait cette commande compliquée (nom de la fonction) et d'avoir un flot d'exécution plus clair.
Le :? pour protéger l'exécution de rm -rf c'est important. Le mieux je trouve est de créer un subshell et d'utiliser trap comme dans:
with_tmpdir()
(
TMPDIR=$(mktemp -d)
trap "rm -rf ${TMPDIR:?}" INT TERM EXIT
"$@"
)
use_tmpdir()
{
touch "${TMPDIR:?}/canari"
ls -lR "${TMPDIR}:?"
}
with_tmpdir use_tmpdir
Ainsi on a une responsabilité claire et unifiée pour l'allocation et la déposition d'une ressource (le répertoire temporaire).
[^] # Re: mysqldump
Posté par Michaël (site web personnel) . En réponse au message Sauvegarde mariadb dans docker. Évalué à 8.
J'ai quelques suggestions pour le script:
Les contr'apostrophes sont pleines de pièges et je crois même qu'elle sont dépréciées depuis plusieurs dizaine d'années!
La fonction permet d'expliquer ce que fait cette commande compliquée (nom de la fonction) et d'avoir un flot d'exécution plus clair.
Le
:?pour protéger l'exécution derm -rfc'est important. Le mieux je trouve est de créer un subshell et d'utiliser trap comme dans:Ainsi on a une responsabilité claire et unifiée pour l'allocation et la déposition d'une ressource (le répertoire temporaire).