Boucle for ( toute bête)

Résolu
thierryR51 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   -  
thierryR51 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je viens de faire un script super simple:
#!/bin/bash
set -x

# Ce script remet les fichiers sensibles dans le home afin qu'il soit sauvegardé.

destination="/home/thierry/etc/";
origine='/etc/';
fichiers=('hosts' 'hostname');

#----------------------------------------------------------------------------------------------------------

# si pas root on sort
if [ "$UID" -ne "0" ]
then
echo "pas root: Arrêt"
exit 1
fi

# test des dossiers
if [ ! -d "$destination" ]; then
echo "Dossier non valide";
exit 1;
fi


for fichier in $fichiers
do


#test des fichiers
if [ -f "$origine$fichier" ]; then
echo "le fichier est $fichier"
cp "$origine$fichier" "$destination"

fi

done
exit 0;



Pourtant la boucle for ne fonctionne pas.
+ destination=/home/thierry/etc/
+ origine=/etc/
+ fichiers=('hosts' 'hostname')
+ '[' 0 -ne 0 ']'
+ '[' '!' -d /home/thierry/etc/ ']'
+ for fichier in '$fichiers'
+ '[' -f /etc/hosts ']'
+ echo 'le fichier est hosts'
le fichier est hosts
+ cp /etc/hosts /home/thierry/etc/
+ exit 0


J'ai parcouru bien des sites, mais que ce soit la fabrication du tableau ou de l'utilisation de for je ne vois pas l'erreur.
Je pense ne pas avoir l'œil assez averti


A voir également:

1 réponse

Utilisateur anonyme
 
salut,

fichiers
est un tableau,
donc il faut l'appeler ainsi :
for fichier in "${fichiers[@]}"
0
thierryR51 Messages postés 139 Date d'inscription   Statut Membre Dernière intervention   8
 
Yes, ça marche. Merci.
0