Récupérer paramétre

Bonjour,
j'ai un script au niveau duquel il y a un prompt pour répondre à une question moyennant la commande read.
Comment passer directement cette variable au niveau de la ligne de commande?
Ex :
script test.sh
echo "Votre choix", read choix

echo $choix

comment passer cette valiable au niveau de la ligne de commande :
test.sh $choix

Merci d'avance.

6 réponses

  1. Bonjour sam,

    $1 pour le paramètre 1, $2 pour le paramètre 2...

    Voir :
    http://www.commentcamarche.net/faq/5444-bash-les-parametres
    1. merci pour votre retour.
      Je me suis mal fait exprimé peut être.
      J'ai un script interactif qui attend un choix de ma part. exemple :

      contenu du script test.sh
      for choice in 1 2 3 4
      do
      echo "1 - choix1"
      echo "2 - choix2"
      echo "3 - choix3"
      echo "4 - Quitter"

      echo "Select option:"
      read choice

      case $choice in
      1) call_f1;;
      2) call_f2 ;;
      3) call_f3;;
      4) exit 0 ;;
      *) echo "choix invalide" ;;

      esac
      done

      comment je peux passer mon choix en ligne de commande pour exécuter le script en mode ligne de commande de tel sorte à passer mes choix directement sur l'invite shell.
      exemple :
      test.sh 2 ==> executer directement call_f2.

      Merci d'avance.
      1. C'est bien ce que j'avais compris, mais ma réponse était peut-être trop évasive.

        En reprenant votre script :
        choice=$1
        if[$1 -ne 1] && [$1 -ne 2] && [$1 == 3] && [$1 -ne 4]; then
         for choice in 1 2 3 4
         do
          echo "1 - choix1"
          echo "2 - choix2"
          echo "3 - choix3"
          echo "4 - Quitter"
        
          echo "Select option:"
          read choice
        fi
        case $choice in
        1) call_f1;;
        2) call_f2 ;;
        3) call_f3;;
        4) exit 0 ;;
        *) echo "choix invalide" ;;
        esac
        done
        


        Ça doit faire le job, normalement. Je n'ai pas pu tester le code mais les idées sont là aux erreurs de syntaxe près.

        Concrètement : on teste si l'argument de ligne de commande a une valeur valide parmi 1, 2, 3 ou 4. Si ce n'est pas le cas, on exécute l'entrée clavier.
        Autrement, on passe directement à l'évaluation de $choice.

        $1 correspond au premier argument de la ligne de commande.
        1. est ce qu'il n'y a pas possibilité de le faire sans pour autant modifier le script? sinon, créer un autre script se basant sur le premier?
          1. Contributeur
            Salut,

            Il te faut juste appeler ton script comme suit :

            ./test.sh <<<2

            Pour sélectionner le choix numéro "2".
        2. Si. Je pensais que vous vouliez faire un script qui gère les deux cas.
          C'est beaucoup plus simple, du coup :
          case $1 in
          1) call_f1;;
          2) call_f2 ;;
          3) call_f3;;
          4) exit 0 ;;
          *) echo "choix invalide" ;;
          esac
          done