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. 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
  2. Contributeur

    montre le script

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

      0
  3. 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

      hello

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

      echo && echo '  Vous êtes l'\''étudiant n°'${student: -3}''
      0
      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