Substitution Shell / bash

Résolu

Bonjour,
I have a problème comme et pour toujours.

J'ai un script qui récupère le nom d'un profil entré par l'utilisateur par le terminal Linux et qui ensuite récupère les 2 derniers caractères, mais bien évidemment ça ne veut pas…

Si quelqu'un à une idée (j'ai essayé par "trail", mais il me marque toujours "Bad Substitution").

Alors que dans le cas écrit ci-dessous, il m'écrit juste la variable dans son intégralité.

Si quelqu'un à une solution (oui, j'ai déjà été voir sur internet et je ne comprends pas davantage mon erreur).

#!/bin/bash
clear
echo && echo '  Pour quel étudiant ?'
echo '  (student07 par exemple)' && echo
read student

clear
echo && echo '  Vous êtes l'\''étudiant n°'${student:-3}''

5 réponses

  1. Ok, j'ai trouvé une solution, vu que chaque profil commence tous par "student", je peux faire :

    #!/bin/bash
    clear
    echo && echo '  Pour quel étudiant ?'
    echo '  (student07 par exemple)' && echo
    read student
    clear
    echo && echo '  Vous êtes l'\''étudiant n°'${student##*student}''

    Mais n'est malheureusement pas utilisable dans un cas générique :
    Si quelqu'un à une solution justement dans un cas générique, je laisse le topic en "non résolu" pour l'instant

    0
    1. Contributeur

      hello

      il faut un espace entre : et -3   (voir man bash)

      echo && echo '  Vous êtes l'\''étudiant n°'${student: -3}''
      0
      1. Merci pour ta réponse,
        Mais ça ne fonctionne toujours pas et je ne comprends pas pourquoi…

        Dans mes souvenirs, il fallait faire comme tu le dis et c'est aussi ce que j'ai vu sur internet. (que j'ai oublié de préciser).

        Donc voilà ce que j'obtiens avec le script qui pour moi, aussi, est bon.

        0
        1. Contributeur

          montre le script

          0
          1. Tout est dans le screenshot, ni plus ni moins

            0
        2. Contributeur

          comment tu l'exécutes ?

          ne pas faire

          sh test.sh

          mais

          bash test.sh
          # ou
          chmod u+x test.sh; ./test.sh
          0
          1. J'ai relancer la VM

            Et ça fonctionne maintenant

            En tout cas merci, au moins le topic montre bien tout ce qu'on doit faire attention mdrr

            0