logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Ceci est une ancienne révision du document !


Bash : les opérateurs lexicographiques

RAPPEL DU PLAN DE LA SÉRIE :

1) Intro I : Bash : Introduction

2) chap II : Bash : Détail et caractères

3) chap III : C'est ici !

4) chap IV : Bash : les opérateurs de comparaison numérique

5) chap V : Bash : les symboles dans les calculs

6) chap VI : Bash : les tableaux

7) chap VII : Bash : les caractères de transformation de parametres

8) chap VIII : Bash : globs étendus et regex

Opérateurs lexicographiques

1) Caractères de comparaison sur les chaînes de caractères

  • Le shell bash utilise les opérateurs booléens sur les chaînes de caractère : == , != , < , > , >=, ⇐ ,
  • contexte : conditions (voir man bash lignes 2498-2513
Condition Signification
$chaine1 = $chaine2 est égal
$chaîne1 == $chaîne2 synonyme de =
$chaine1 != $chaine2 n'est pas égal à
$chaine1 < $chaîne2 avant (selon l'ordre alphabétique ASCII)
$chaine1 < $chaîne2 après (ASCII)
  • Pour effectuer des comparaisons sur les chaînes de caractère2) : les options -z et -a sont communes aux deux cas suivants :
Le shell bash utilise les commandes internes et composées [[ ]] ou [ ]
(souvent utilisées avec IF) pour les comparaisons de chaînes de caractères.

C'est pourquoi on trouve souvent les options -z et -a du tableau ci-dessous, ajoutées au tableau ci-dessus :

Condition Signification
-z $chaine ne contient rien
-n $chaine contient quelque-chose
  • remarques :

-bashismes :

[[ $a == "z*" ]]  # vrai si $a est égal à z*
[[ $a == z* ]]    # vrai si $a commence avec un "z" (reconnaissance de modèles)
if [[ "$a" < "$b" ]]

-posix :

[ "$a" == "z*" ]  # vrai si $a est égal à z*
if [ "$a" \< "$b" ]

2) Tests sur les fichiers

  • Le shell bash
Il permet d'effectuer aussi des comparaisons sur les fichiers avec 
les commandes internes et composées [[ ]] et [ ]]
(associées à IF ou non). 
Les commandes [[ ]] et [ ] suppléent la commande test.
Pour les comparaisons de nombres, on peut utiliser aussi la commande test.
if [[ option $FICHIER ]]
test vérifie si :
-e $nomfichier le fichier existe
-d $nomfichier le fichier est un répertoire
-f $nomfichier le fichier est un document
-L $nomfichier le fichier est un lien symbolique
-r $nomfichier le fichier est lisible
-w $nomfichier le fichier est modifiable
-x $nomfichier le fichier est exécutable
$fichier1 -nt $fichier2 fichier1 est plus récent que fichier2 (newerthan)
$fichier1 -ot $fichier2 fichier1 est plus vieux que fichier2 (olderthan)

Exemple :

#!/bin/bash
var="/home/hypathie/Dossier/fichierp1"
if [ -e "$var" ]
then
  echo "le fichier existe !"
else
  echo "fichier inexistant !"

fi
var2="/home/hypathie/Dossier/fichierp1"
if [ -s "$var2" ]
then
  echo "non vide !"
else
  echo "vide !"

fi

Tuto précédent

La suite c'est ici :

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2)
Voir Man bash ligne 2410 et man test ligne 39
doc/programmation/shells/la-page-man-bash-ii-les-operateurs-lexicographiques.1401429653.txt.gz · Dernière modification: 30/05/2014 08:00 par Hypathie

Pied de page des forums

Propulsé par FluxBB