Quelques exemples de scripts - ou de lignes commandes - shell pour répondre à quelques problèmes fréquemment rencontrés.
| Variable | Description |
|---|---|
| $# | Nombre d'arguments passés au script |
| $* | Liste des arguments |
| $0, $1, $2, … | Arguments passés au script ($0 = nom du script) |
| $? | Code de retour dernière commande |
| $! | pid de la dernière commande lancée en tâche de fond |
| $$ | pid du script |
# Tester le résultat d'appel d'une fonction / commande # Par défaut : 0 = ok if [ $? -eq 0 ]; then echo "ok" else echo "pas ok" fi
function cleanupfiles() {
fileCount=0
for aFile in `ls -t ./tests/*.bz2`
do
let fileCount+=1
# On conserve les 5 fichiers les plus recents
if [ "$fileCount" -gt 5 ]; then
echo $fileCount "remove " $aFile
fi
done
}
#!/bin/bash
function quit() {
exit
}
function helloworld() {
echo Hello World!
}
helloworld
quit
# "quit" quitte, le code ci après n'est pas exécuté
echo done ...
#!/bin/bash
function say() {
echo $1
}
say "Hello World!"
# Première méthode basée sur dirname et basename f=/mypath/myfile.txt dirname $f # /mypath basename $f # myfile.txt basename $f .txt # myfile
# Sur base d'une boucle for i in *.JPG; do echo $i; done
$i contient le nom du fichier. Sur base de cette variable nous pouvons appliquer quelques changements, copier ou renommer des fichiers.
# Exemple d'utilisation d'une variable
i=ma_photo.JPG
echo $i
ma_photo.JPG
# Supprression d'une partie du nom du fichier
echo ${i/.JPG/}
ma_photo
Cas pratique : ajout d'un “_” avant l'extension du fichier. Exemple : PICT0001.JPG devient PICT0001_.JPG
for i in *.JPG; do mv $i ${i/.JPG/}_.JPG; done
Bash Programming How-To : http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html