Dans le cas d'évaluation composée à l'aide des opérateurs booléens,
il est nécessaire de doubler les crochets.
Ainsi, vous pouver écrire :
Dans tous ces tests penser bien à séparer les différents arguments par des blancs. Ecrire : [ a = b ] et non pas [ a=b ] ou [a = b]
option :
-a fichier vrai si le fichier existe -r fichier vrai si vous pouver lire le fichier -w fichier vrai si le bit d'écriture du fichier est 'on' -x fichier vrai si le fichier est un exécutable -f fichier vrai si le fichier est ordinaire et qu'il existe -d fichier vrai s'il existe et que c'est un répertoire -c fichier vrai si c'est un fichier spécial caractères (device) -b fichier vrai si c'est un fichier spécial block. (device) -p fichier vrai si c'est un tube nommé (named pipe) -u fichier vrai si le set userid est positionné (s flag) -g fichier vrai si le set groupid est positionné (s flag) -k fichier vrai si le sticky bit est positionné (t flag) -s fichier vrai si fichier n'est pas vide -L fichier vrai si c'est un lien symbolique -O fichier vrai si vous êtes le propriétaire du fichier -G fichier vrai si vous faites partie du groupe owner -S fichier vrai si le fichier est du type socketRemarques : attention aux droits d'accés du système de fichiers
| -nt | Tester si fic1 est plus récent que le fic2 : (newer than)
if test fic1 -nt fic2 est équivalent à if [[ fic1 -nt fic2 ]] |
| -ot | Tester si fic1 est plus ancien que le fic2 : (older than)
if test fic1 -ot fic2 est équivalent à if [[ fic1 -ot fic2 ]] |
| -eq | Tester si fic1 un autre nom de fic2 : (equal file)
if test fic1 -eq fic2 est équivalent à if [[ fic1 -eq fic2 ]] |
| -z $variable | vrai si la variable est d'une longueur nulle |
if [[ -z $XSTATION ]] then echo "vous travaillez sur une Xstation" fi |
|
| -n $variable | vrai si la variable n'est pas d'une longueur nulle |
reponse=$(ps -u $USER | grep x3270) if [[ -n $reponse ]] then echo "vous avez des fenêtres x3270 ouvertes" fi |
|
| -t n | n correspond au descripteur de fichier :
1 stdout, 2 stderr, etc ...
Il est optionnel et est égal à 1 par défaut (stdout). La réponse est vraie si le descripteur de fichier n est ouvert ou dans le cas par défaut si vous dispozez d'une sortie standard. |
| -o option | vrai si l'option est active (voir la commande set) |
| Comparaison de 2 chaines : | |
| chaine1 = chaine2 | vrai si égales |
| chaine1 != chaine2 | vrai si différentes |
| chaine1 < chaine2 | vrai si chaine1 est alphabétiquement avant la chaine2 |
| chaine1 > chaine2 | vrai si chaine1 est alphabétiquement après la chaine2 |
Comparaison d'une chaine avec un modèle |
|
| chaine = modèle | vrai si la chaine correspond au modèle |
| chaine != modèle | vrai si la chaine ne correspond pas au modèle |
if [[ $USER = [a-c]* ]] then echo "votre userid commence par a, b ou c" fi
Le fichier est il accessible en lecture ?
[[ -r $file ]] && echo "Ok" || echo "Non-Ok"