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.

4voto

Lukasz Points 141

J'ai trouvé une solution efficace ici : https://af-design.com/2009/07/07/loading-data-into-bash-variables/

if [ -f $SETTINGS_FILE ];then
    . $SETTINGS_FILE
fi

3voto

nedim Points 133

Réponse courte :

name=`cat "$file"`

0voto

George Points 1

Si vous souhaitez utiliser plusieurs chaînes de caractères, vous pouvez opter pour :

path="/foo/bar";
for p in `cat "$path"`;
do echo "$p" ....... (here you would pipe it where you need it) 

O

Si vous voulez que l'utilisateur indique le fichier

read -e "Specify path to variable(s): " path;
for p in 'cat "$path"';
do echo "$p" ............................

0voto

#! /bin/bash
#  (GPL3+) Alberto Salvia Novella (es20490446e)

variableInFile () {
    variable=${1}
    file=${2}

    source ${file}
    eval value=\$\{${variable}\}
    echo ${value}
}

variableInFile ${@}

0voto

Eric Nemchik Points 121

J'utilise ceci pour obtenir une seule variable d'un fichier

GET_VAR=$(grep --color=never -Po "^${GET_VAR}=\K.*" "${FILE}" || true)

Lorsque GET_VAR ne se trouve pas dans ${FILE} il sera vide plutôt que de provoquer une erreur grâce à la fonction || true .

Il utilise grep -P qui est dans GNU grep mais pas par défaut dans tous les grep au moment d'écrire ceci.

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