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. 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
    
    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. 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. 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. Bonjour sam,

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

          Voir :
          http://www.commentcamarche.net/faq/5444-bash-les-parametres