recupere des valeurs dans un fichier a partir d'un script [RESOLU] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 10-05-2007 à 17:49:35
clementcadbury a écrit : |
C'est pas normal ça, les \n, les espaces et les tabs doivent être ignorés normalement. (Il faut aussi se méfier d'echo, par défaut, il ajoute un \n à la fin de la chaine passée en paramètre. )
Sinon, tu insère un
tr \\n " " |
entre ton cat et ton while
Marsh Posté le 11-05-2007 à 10:25:44
en fait il s'agit d'une stupide erreur de ma part :
j'ai édité le fichier /etc/rc.d/firewall/serveurs sous windows,
l'éditeur a donc mis un retour chariot windows (\r\n) alors que unix ne prend en compte que le \n,
c'est pourquoi le \r restait ...
désolé
Marsh Posté le 11-05-2007 à 10:31:20
tu devrais éditer ton sujet et mettre [RESOLU]
Marsh Posté le 11-05-2007 à 10:51:46
voila c'est fait
sinon pour transformer les retours, j'utilise l'excellent notepad++,
dans le menu format, et convertir en format UNIX
et hop tout va bien!
en plus il garde le format d'origine
Marsh Posté le 11-05-2007 à 12:02:25
Reply
Marsh Posté le 10-05-2007 à 17:32:58
Salut a tous,
j'ai un script qui fabrique des regles du firewall en fonction d'ip qui se trouvent dans un autre fichier comme ceci :
le bout de script qui nous interesse :
cat /etc/rc.d/firewall/serveurs | while read lig; do
/sbin/iptables -A CUSTOMFORWARD -s $lig -j ACCEPT;
done
et dans le fichier /etc/rc.d/firewall/serveurs :
192.168.1.20
192.168.1.5
vous l'avez compris, le script lit ligne par lgne le fichier, et lance la commande avec le contenu de la ligne
seulement voila, dans la variable $lig, qui contient donc successivement toutes les lignes, il y a le '\n' de la fin de ligne!
je l'ai vu en faisant un echo de la commande, elle revient a la ligne juste apres l'adresse ip.
avez vous une solution? soit pour lire un fichier ligne par ligne autrement, soit pour enlever le '\n' avant de lancer la commande
Message édité par clementcadbury le 11-05-2007 à 10:49:43