Récupérer paramétre

Fermé
sam - 6 juin 2013 à 14:43
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 6 juin 2013 à 17:34
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

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
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
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
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
6 juin 2013 à 17:34
Salut,

Il te faut juste appeler ton script comme suit :

./test.sh <<<2

Pour sélectionner le choix numéro "2".
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
Merci chef.
Bonne journée.
0