Pour extraire une valeur d'un XML avec grep
:
grep -oPm1 "(?<=<title>)[^<]+"
Example:
$ echo "$data"
<item>
<title>15:54:57 - George:</title>
<description>Diane DeConn? You saw Diane DeConn!</description>
</item>
<item>
<title>15:55:17 - Jerry:</title>
<description>Something huh?</description>
$ title=$(grep -oPm1 "(?<=<title>)[^<]+" <<< "$data")
$ echo "$title"
15:54:57 - George:
set -e
: sort automatiquement du script si une commande échoueset -u
: sort automatiquement du script si une variable n'est pas initialiséeset -o pipefail
: sort automatiquement du script si une commande dans un pipe échoueIFS=$'\n\t'
: les chaînes de caractères séparées par un espace sont considérées comme une même chaîne de caractère (seul le saut de ligne et la tabulation sont considéré comme des séparateurs standards)function finish { ... }
&trap finish EXIT
: les instructions de la fonction finish seront toujours exécutés en sortie du script (ex: supprimer des fichiers temporaires, arrêter ou redémarrer une application, ...)
#!/bin/bash
function finish {
# Your cleanup code here
}
trap finish EXIT
Utile pour supprimer un répertoire temporaire quand le script s'arrête par exemple, mais aussi pour redémarrer un service qu'on arrête pour maintenance en début de script
Exemple de remplacement d'un script shell de provisionning par une recipe chef.
Avec chef-apply, pas besoin de créer toute l'infra de config management, il est possible d’exécuter une recipe chef comme un script
Utiliser la variable de type array $PIPESTATUS
en bash pour obtenir le code retour d'une commande après un pipe |
Les normes de scripting Shell en vigueur chez Google.
Également dispo pour les autres langages de développement utilisées par Google (C++, Java, Python, HTML/CSS, JavaScript...) à cette adresse:
Pas mal d'astuces sympa dont:
set -u
(ou set -o nounset
) pour que le script se termine s'il doit utiliser une variable nom définie. A tester
Analyseur syntaxique de script shell en ligne ou à télécharger
Bonnes pratiques pour écrire des scripts shell propres