Table des matières

Bash Scripting

Introduction

Quelques exemples de scripts - ou de lignes commandes - shell pour répondre à quelques problèmes fréquemment rencontrés.

Les variables spéciales

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

Les tests

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
}

Les fonctions

Sans paramètres

#!/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 ...

Avec paramètres

#!/bin/bash

function say() {
  echo $1 
}  

say "Hello World!"

Liens

http://www.linuxjournal.com/content/return-values-bash-functions

Extraire le nom ou le répertorie d'un fichier

# 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

Lien : http://tldp.org/LDP/LGNET/18/bash.html

Renommer des fichiers

# 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

Fichiers de paramètres

http://wiki.bash-hackers.org/howto/conffile

Quelques liens et autres informations pratiques

Bash Programming How-To : http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html