#1 Le 22/01/2008, à 12:58
- Sciensous
script shell: recherche sous chaine
Bonjour,
j'ai une question "bête" concernant la manipulation de chaines en script:
j'ai une variable contenant des caracteres, par exemple:
fichier="file://test.sh"
comment tester la présence de la sous chaine
file:
?
(équivalent de grep avec un fichier)
merci
#2 Le 22/01/2008, à 13:33
- whalexis
Re : script shell: recherche sous chaine
Bonjour,
tu peux utiliser sed en mettant la valeur de ta variable dans l'entrée standard.
ça devrait marcher
#3 Le 22/01/2008, à 13:36
- Coolgeek
Re : script shell: recherche sous chaine
echo $fichier |grep -i "file:"
?
Hors ligne
#4 Le 22/01/2008, à 13:44
- Sciensous
Re : script shell: recherche sous chaine
Merci
donc on est obligé de passer par des instructions "externes" au bash !? Ce serait dommage si c'est le cas.
ps aux modos: L'intitulé de ce post peut porter le mention Rà‰SOLU
#5 Le 22/01/2008, à 13:55
- Aurel34
Re : script shell: recherche sous chaine
tu peux utiliser le remplacement de prefixe+un test, genre:
if [ "${TOTO#file:}" != "$TOTO" ]; then echo "TOTO commence par file:"; fi;
#6 Le 22/01/2008, à 14:23
- Coolgeek
Re : script shell: recherche sous chaine
si par 'bash' tu entend uniquement les instruction if, then, else, for, do, while,...
sinon dans la prog en script bash, l'utilisation de programme externe est conseillé.
Hors ligne
#7 Le 22/01/2008, à 16:07
- Sciensous
Re : script shell: recherche sous chaine
encore merci,
je pensais comme Aurel34, mais je pensais qu'il y avait plus simple puisqu'on peut facilement couper une chaine à une position ou un caractère donnés ... et j'avais donc peur de passer à cà´té de quelquechose
#8 Le 22/01/2008, à 18:42
- Alain.g
Re : script shell: recherche sous chaine
Si c'est possible en bash :
il faut utiliser l'opérateur =~ avec les doubles crochets, ce qui permet d'utiliser une expression rationnelle : [[ $string =~ regex ]]
Dans ton cas :
[[ "$fichier" =~ ^file: ]] && echo OK
ou bien
if [[ "$fichier" =~ ^file: ]] ; then echo OK ; fi
Attention toutefois, s'il faut être compatible avec les versions assez anciennes de Bash, alors il vaut mieux éviter cette méthode.
Xubuntu Karmic !
Hors ligne