Suppression des zeros non significatifs d'une variable

Résolu
tbeghain Messages postés 63 Statut Membre -  
lEprofSonDkon Messages postés 227 Statut Membre -
Bonjour,

Je rebondis sur une demande identique faite il y a longtemps. J'ai le même problème (je veux supprimer les 0 non significatifs devant une variable alphanumérique qui ne contient que des chiffres).
J'ai repris exactement l'exemple qui avait été donné à l'époque
Si j'applique la solution préconisée, directement à partir de la ligne de commande, ça fonctionne

>var=0000001253; echo ${var##*(0)}
1253


Par contre, dès le moment où je le mets dans un script shell, je n'ai pas du tout le résultat attendu :
>cat test.sh


#!/bin/bash
var=0000001253; echo ${var##*(0)}


>test.sh
0000001253


Bon, je suis en Linux CentOS7. Ça doit être tout con. Peut être il manque quelque chose....

Merci pour vos réponses

Configuration: CentOS Linux release 7.5.1804 (Core)

5 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    $ cat test.sh
    #!/bin/bash
    shopt -s extglob
    var=0000001253; echo ${var##*(0)}
    $ test.sh
    1253
    $
    2
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Effectivement ça ne marche pas. Tu peux supprimer les zéros de gauche avec
    sed
    :

    #!/bin/bash 
    var=0000001253
    var=$(echo $var | sed -e "s/^0*//")
    echo $var


    Bonne chance
    1
    1. tbeghain Messages postés 63 Statut Membre 3
       
      Bonjour,

      Oui, ça, ça fonctionne. Merci bien. Mais n'empêche que j'aimerais comprendre ce qui fait que la commande directe ne fonctionne pas dans le script...
      0
  3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    ne pas exécuter le script par:
    sh test.sh
    0
    1. tbeghain Messages postés 63 Statut Membre 3
       
      Bonjour,

      Euh !!! Mais comment exécuter le script alors ? De toute façon, je ne l'exécutais pas avec sh test.sh, mais test.sh tout court...
      0
  4. tbeghain Messages postés 63 Statut Membre 3
     
    Bonjour,

    Ouaip ! Ca marche aussi avec shopt. Merci bien .Je sais pas ce c'est que ce shopt. Je vais me renseigner.
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      dans la page man de bash, voir
      Développement des noms de fichiers
      ....
      Si l'option extglob du shell option est activée par la commande shopt plusieurs opérateurs de correspondance étendue sont reconnus. ...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lEprofSonDkon Messages postés 227 Statut Membre 13
     
    salut,

    en bash :
    echo $((10#$var))
    0