93 votes

Comment lire une variable à partir d'un fichier ?

Je veux insérer dans mon script une valeur (chaîne de caractères) que je lirais à partir d'un fichier texte.

Par exemple, au lieu de :

echo "Enter your name"
read name

Je veux lire une chaîne de caractères à partir d'un autre fichier texte afin que l'interprète lise la chaîne de caractères à partir du fichier et non de l'entrée de l'utilisateur.

0voto

Jesse Nickles Points 342

Cette question est un peu vague, d'où un grand nombre de réponses bizarres ; en fait, certaines des réponses de cette page ne répondent même pas à la question initiale.

Cela dit, si vous voulez sourcer (lire) une variable bash à partir d'un fichier différent, la meilleure solution est toujours d'utiliser un subshell afin qu'aucun conflit ne survienne entre votre script et le fichier qui est lu :

WORKING_VARIABLE=$(source /path/script.sh; echo $FILE_VARIABLE)

Nous utilisons cette méthode dans SlickStack pour sourcer le fichier de configuration plusieurs fois sans conflits.

Si vous prévoyez d'utiliser plusieurs variables du fichier ou si vous avez d'autres raisons d'inclure l'intégralité de l'autre fichier dans votre script actuel, alors vous pourriez sourcer le fichier entier :

source /path/script.sh

Mais dans les cas où il n'y a pas de variables de base, comme dans le cas du PO qui veut lire une simple "chaîne" à partir d'un fichier texte, aucune de ces solutions ne fonctionnera, et vous devrez utiliser une solution adaptée à la syntaxe du code que vous essayez de lire... par exemple, l'un des exemples sur cette page utilisant grep o awk combinaisons, ou @thom solution pour lire une ligne donnée d'un fichier en utilisant read .

TL;DR les subshells sont les meilleurs pour les variables bash, sinon cela dépend de la syntaxe du fichier.... si vous voulez sauvegarder le contenu du fichier comme une variable bash, essayez cat comme expliqué par @hellork .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X