Récupérer paramétre

sam -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
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. Takido
     
    Bonjour sam,

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

    Voir :
    http://www.commentcamarche.net/faq/5444-bash-les-parametres
    0
  2. sam
     
    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.
    0
  3. Takido
     
    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.
    0
  4. sam
     
    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?
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Salut,

      Il te faut juste appeler ton script comme suit :

      ./test.sh <<<2

      Pour sélectionner le choix numéro "2".
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Takido
     
    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
    
    0