Une autre manière de procéder consiste à rediriger l’entrée standard vers votre fichier, où vous avez toutes les entrées utilisateur dans l’ordre attendu 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 du terminal de l'une des deux manières suivantes:
$ cat input.in | ./script.sh
$ ./script.sh < input.in
et cela équivaudrait à simplement exécuter le script et à entrer les données manuellement - cela imprimerait la ligne "Hello Tomas. Vous avez 26 ans, non?".
Comme Radu Rădeanu a déjà suggéré , vous pouvez utiliser cat
dans votre script pour lire le contenu d'un fichier dans une variable - dans ce cas, vous avez besoin que chaque fichier contienne une seule ligne, avec seulement la valeur souhaitée pour cette variable spécifique. Dans l'exemple ci-dessus, vous divisez le fichier d'entrée en un avec le nom (par exemple, name.in
) et un avec l'âge (par exemple, age.in
) et remplacez les lignes read name
et read age
par name=$(cat name.in)
et age=$(cat age.in)
respectivement.