#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
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
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 ! (ou deux …)