Chaîne contient une *

Résolu
Salut !

Je fais du script shel et je cherche à savoir comment déterminer si une chaîne de caractères contient une *

Pour remettre dans le contexte, ma chaîne contient un path de dossier

je dois tester si le dossier existe mais si 'ai une * ( ex /home/* ) le test me renvoie une erreur et sa même si un dossier ( pour garder mon exemple /home/root ) existe

Et vu que * est un caractère un peu spécial je me demande comment gérer sa...

Merci d'avance ! =)

--
Cordialement,
Lapourax ;)

4 réponses

  1. Modérateur
    Et par conséquent sous les shell bash-like (liste non exhaustive), un nom de fichier ou de répertoire contenant un joker '*' ou '*' doit être protégé:
    johand@osiris: ~/tmp $ cd joker/
    johand@osiris: ~/tmp/joker $ touch brol
    johand@osiris: ~/tmp/joker $ touch 'truc*1'
    johand@osiris: ~/tmp/joker $ ls -l
    total 0
    -rw-r--r-- 1 johand johand 0 mai 21 16:12 brol
    -rw-r--r-- 1 johand johand 0 mai 21 16:13 truc*1
    johand@osiris: ~/tmp/joker $ ls -l *\**
    -rw-r--r-- 1 johand johand 0 mai 21 16:13 truc*1

    1. Contributeur
      Ok merci à vous deux ! J'ai pu bidouiller pour faire ceque j'avais à faire autrement du coup =)
      Encore merci et à bientôt !
      1. Contributeur
        Par contre du coup j'ai un autre problème !
        Sa doit être tout con mais je dois couper ma variable (toujours le path) pour obtenir le dossier parent (supprimer le dernier /exemple)

        jai essayé avec cut mais vu que le dosser à un nom variable sa marche pas à tous les coups
        sa doit se faire avec awk non ?
        1. Contributeur
          Salut,

          $ echo ${var}
          /home/toto/rep/exemple
          
          $ echo ${var%/*}
          /home/toto/rep
          
        2. Contributeur
          Sa marche super =)
          Merci !