Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/09/2014, à 11:14

Le Goss

[Résolu] Bash: rendre un test insensible à la casse

Bonjour à tous,
Soit le script

#!/bin/bash

read -p 'Entrer un nom de fichier : ' nom
if [ -e $nom ]; then
	echo -e "Le fichier $nom existe"
else
	echo -e "Le fichier $nom n'existe pas"
fi

Ma question: comment faire pour que le test ne soit pas sensible à la casse?
Merci pour votre aide!
Cordialement

Dernière modification par Le Goss (Le 19/09/2014, à 13:32)


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#2 Le 19/09/2014, à 12:26

pingouinux

Re : [Résolu] Bash: rendre un test insensible à la casse

Bonjour,
Je n'ai pas trouvé plus simple.

#!/bin/bash

shopt -s dotglob nocasematch
read -p 'Entrer un nom de fichier : ' nom

oui_non="n'existe pas"

for i in *; do
   if [[ "$nom" == "$i" ]]; then
      oui_non="existe"
      break
   fi
done

echo -e "Le fichier $nom $oui_non"

Hors ligne

#3 Le 19/09/2014, à 12:44

Compte supprimé

Re : [Résolu] Bash: rendre un test insensible à la casse

Bonjour,
Peut-être une piste avec «grep -i» ? en comparant $nom avec la sortie de grep -i ? Est-ce que ça simplifie le script de pingouinux ?

ls|grep -i $nom

man grep

Dernière modification par Compte supprimé (Le 19/09/2014, à 12:44)

#4 Le 19/09/2014, à 13:03

Le Goss

Re : [Résolu] Bash: rendre un test insensible à la casse

J'avais commencé par chercher dans cette direction, mais ça ne fonctionne pas:

#!/bin/bash

read -p 'Entrer un nom de fichier : ' nom

sortie=$(ls | grep -i "$nom")

if [ -e $sortie ]; then
	echo -e "Le fichier $nom existe"
else
	echo -e "Le fichier $nom n'existe pas"
fi

(Post corrigé)

Dernière modification par Le Goss (Le 19/09/2014, à 13:12)


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#5 Le 19/09/2014, à 13:25

pingouinux

Re : [Résolu] Bash: rendre un test insensible à la casse

Le grep est une excellente idée, mais il faut faire ainsi :

#!/bin/bash

read -p 'Entrer un nom de fichier : ' nom

sortie=$(ls | grep -i "^$nom$")

if [ -e "$sortie" ]; then
	echo -e "Le fichier $nom existe"
else
	echo -e "Le fichier $nom n'existe pas"
fi

Édité : Beaucoup plus simple

#!/bin/bash

read -p 'Entrer un nom de fichier : ' nom

ls | grep -i "^$nom$" && echo -e "Le fichier $nom existe" || echo -e "Le fichier $nom n'existe pas"

Dernière modification par pingouinux (Le 19/09/2014, à 13:30)

Hors ligne

#6 Le 19/09/2014, à 13:31

Le Goss

Re : [Résolu] Bash: rendre un test insensible à la casse

Je n'étais pas très loin cool
Merci pour le coup de main!
Sujet résolu.


Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags

Hors ligne

#7 Le 19/09/2014, à 16:20

Compte supprimé

Re : [Résolu] Bash: rendre un test insensible à la casse

pingouinux a écrit :

Le grep est une excellente idée, mais il faut faire ainsi :

#!/bin/bash

read -p 'Entrer un nom de fichier : ' nom

sortie=$(ls | grep -i "^$nom$")

if [ -e "$sortie" ]; then
	echo -e "Le fichier $nom existe"
else
	echo -e "Le fichier $nom n'existe pas"
fi

Édité : Beaucoup plus simple

#!/bin/bash

read -p 'Entrer un nom de fichier : ' nom

ls | grep -i "^$nom$" && echo -e "Le fichier $nom existe" || echo -e "Le fichier $nom n'existe pas"

J'adore quand la solution fait une ligne ! smile (ou deux …)