Boucle for ( toute bête)

Résolu/Fermé
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 - 2 janv. 2017 à 15:30
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 - 2 janv. 2017 à 16:56
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
2 janv. 2017 à 16:40
salut,

fichiers
est un tableau,
donc il faut l'appeler ainsi :
for fichier in "${fichiers[@]}"
0
thierryR51 Messages postés 139 Date d'inscription dimanche 5 juillet 2015 Statut Membre Dernière intervention 22 juin 2021 8
2 janv. 2017 à 16:56
Yes, ça marche. Merci.
0