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 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 smile

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