2012-11-25 2 views
0

J'ai le script bash suivant. Il calcule ax^2 + bx + c. Demande a, b et c comme vous pouvez le voir et obtient x comme argument de ligne de commande.Remplacement de variable dans bash à partir de la ligne de commande

echo "Enter a value for a: " 
read a 
echo "Enter a value for b: " 
read b 
echo "Enter a value for c: " 
read c 

echo Result is `expr $a \* $1 \* $1 + $b \* $1 + $c`. 

exit 

Ce que je veux faire est maintenant (sans aucune modification du code ci-dessus) qui obtiennent (override) les valeurs de a, b & c à partir d'un fichier (valeurs énumérées un après l'autre, le tout dans un ligne) dans la ligne de commande et sauter les demander dans l'exécution du script.

Je pensais que getopts serait la fonction dans ce but, mais je ne savais pas comment l'utiliser. Ou s'agit-il d'autre chose?

Merci.

+0

Vous semblez avoir des exigences contradictoires: 1) 'sans aucune modification au code ci-dessus' et ensuite 2)' skip les demandant dans l'exécution du script' –

+0

De plus, où "from command line" voulez-vous obtenir 'a, b & c' de si vous ne voulez pas demander à l'utilisateur pour l'entrée? voulez-vous l'analyser à partir d'un fichier? –

+0

Oui, je veux analyser à partir d'un fichier. J'ajoutais simplement cette nécessité en tant que modification. Aussi je ne veux pas de changements au code puisque cette affectation de la mienne l'exige comme ça. –

Répondre

1

Vous pouvez créer le fichier que vous vouliez:

1 
2 
3 

L'appeler params.txt, alors vous faites:

$ ./myScript 2 < params 
Enter a value for a: 
Enter a value for b: 
Enter a value for c: 
Result is 11. 

Et fonctionne.

+0

merci beaucoup :) –

+0

@ CanSürmeli Je doute vraiment que j'appellerais cela "overriding variable", mais je ne pouvais pas obtenir la façon dont je l'appellerais non plus. – mgarciaisaia

+0

Vous avez raison en fait. Ce que l'on voulait de moi était essentiellement une simple redirection, mais je pensais dur comme autre chose. –

Questions connexes