Une autre façon de procéder serait de rediriger l'entrée standard vers votre fichier, où vous avez toutes les entrées utilisateur dans l'ordre où elles sont attendues par le programme. Par exemple, avec le programme (appelé script.sh
)
#!/bin/bash
echo "Enter your name:"
read name
echo "...and now your age:"
read age
# example of how to use the values now stored in variables $name and $age
echo "Hello $name. You're $age years old, right?"
et le fichier d'entrée (appelé input.in
)
Tomas
26
vous pouvez l'exécuter à partir du terminal de l'une des deux manières suivantes :
$ cat input.in | ./script.sh
$ ./script.sh < input.in
et ce serait équivalent à simplement exécuter le script et à entrer les données manuellement - il imprimerait la ligne "Bonjour Tomas. Tu as 26 ans, n'est-ce pas ?".
Comme Radu Radeanu tiene déjà proposé vous pouvez utiliser cat
à l'intérieur de votre script pour lire le contenu d'un fichier dans une avariable - dans ce cas, vous avez besoin que chaque fichier ne contienne qu'une seule ligne, avec seulement la valeur que vous voulez pour cette variable spécifique. Dans l'exemple ci-dessus, vous divisez le fichier d'entrée en un fichier avec le nom (disons, name.in
) et un avec l'âge (disons, age.in
), et modifiez le read name
y read age
lignes vers name=$(cat name.in)
y age=$(cat age.in)
respectivement.