Bonjour,
sur une Mandrake 9.2, j'ai un bash 2.05b.
j'ai voulu lancer un script (que j'ai trouvé sur léa-linux) au démarrage
pour charger les iptables, mais il y a une erreur :
./iptables: line 15: [: -eq: unary operator expected
qui se produit sur cette partie :
echo -n "Application des règles IpTables: "
/etc/firewall.sh
RETVAL=?
[ -eq 0 ] && touch /var/lock/subsys/firewall
echo
Pourriez-vous me dire ce qui cloche, je n'ai pas trouvé dans 'man bash' ...
Le 06-05-2004, à propos de syntaxe de bash, Fauberteau Frédéric écrivait dans fr.comp.os.linux.configuration :
Bonjour, sur une Mandrake 9.2, j'ai un bash 2.05b. j'ai voulu lancer un script (que j'ai trouvé sur léa-linux) au démarrage pour charger les iptables, mais il y a une erreur : ./iptables: line 15: [: -eq: unary operator expected
qui se produit sur cette partie : echo -n "Application des règles IpTables: " /etc/firewall.sh RETVAL=? [ -eq 0 ] && touch /var/lock/subsys/firewall echo
Pourriez-vous me dire ce qui cloche, je n'ai pas trouvé dans 'man bash' ...
[ -eq 0 ] && touch /var/lock/subsys/firewall Le test compare 0 à rien... D'où une certaine perplexité de test (l'opérateur [ ).
JKB
Le 06-05-2004, à propos de
syntaxe de bash,
Fauberteau Frédéric écrivait dans fr.comp.os.linux.configuration :
Bonjour,
sur une Mandrake 9.2, j'ai un bash 2.05b.
j'ai voulu lancer un script (que j'ai trouvé sur léa-linux) au démarrage
pour charger les iptables, mais il y a une erreur :
./iptables: line 15: [: -eq: unary operator expected
qui se produit sur cette partie :
echo -n "Application des règles IpTables: "
/etc/firewall.sh
RETVAL=?
[ -eq 0 ] && touch /var/lock/subsys/firewall
echo
Pourriez-vous me dire ce qui cloche, je n'ai pas trouvé dans 'man bash' ...
[ -eq 0 ] && touch /var/lock/subsys/firewall
Le test compare 0 à rien... D'où une certaine perplexité de test
(l'opérateur [ ).
Le 06-05-2004, à propos de syntaxe de bash, Fauberteau Frédéric écrivait dans fr.comp.os.linux.configuration :
Bonjour, sur une Mandrake 9.2, j'ai un bash 2.05b. j'ai voulu lancer un script (que j'ai trouvé sur léa-linux) au démarrage pour charger les iptables, mais il y a une erreur : ./iptables: line 15: [: -eq: unary operator expected
qui se produit sur cette partie : echo -n "Application des règles IpTables: " /etc/firewall.sh RETVAL=? [ -eq 0 ] && touch /var/lock/subsys/firewall echo
Pourriez-vous me dire ce qui cloche, je n'ai pas trouvé dans 'man bash' ...
[ -eq 0 ] && touch /var/lock/subsys/firewall Le test compare 0 à rien... D'où une certaine perplexité de test (l'opérateur [ ).
JKB
eric_alube
Bonjour,
Bonjour, sur une Mandrake 9.2, j'ai un bash 2.05b. j'ai voulu lancer un script (que j'ai trouvé sur léa-linux) au démarrage pour charger les iptables, mais il y a une erreur : ./iptables: line 15: [: -eq: unary operator expected
Oui, il y a bien une erreur : tu fais un test sur rien :-)
qui se produit sur cette partie : echo -n "Application des règles IpTables: " /etc/firewall.sh RETVAL=?
résoudra ton problème, car il semble que c'est RETVAL qui conditionne la création de /var/lock/subsys/firewall
En fait, on ne peut pas te répondre comme ça , parce qu'il faut tout ce qu'il y a avant pour te répondre correctement
echo
Pourriez-vous me dire ce qui cloche, je n'ai pas trouvé dans 'man bash' ...
Pourrais tu s'il te plait nous faire plutôt un :
cat -n ./iptables | head -15
(c'est bien iptables le nom du shell script ? )
...histoire qu'on puisse y voir plus clair ?
Cordialement
-- revp onpuneq
Bonjour,
Bonjour,
sur une Mandrake 9.2, j'ai un bash 2.05b.
j'ai voulu lancer un script (que j'ai trouvé sur léa-linux) au démarrage
pour charger les iptables, mais il y a une erreur :
./iptables: line 15: [: -eq: unary operator expected
Oui, il y a bien une erreur : tu fais un test sur rien :-)
qui se produit sur cette partie :
echo -n "Application des règles IpTables: "
/etc/firewall.sh
RETVAL=?
Bonjour, sur une Mandrake 9.2, j'ai un bash 2.05b. j'ai voulu lancer un script (que j'ai trouvé sur léa-linux) au démarrage pour charger les iptables, mais il y a une erreur : ./iptables: line 15: [: -eq: unary operator expected
Oui, il y a bien une erreur : tu fais un test sur rien :-)
qui se produit sur cette partie : echo -n "Application des règles IpTables: " /etc/firewall.sh RETVAL=?
Je pense que c'est bien RETVAL qu'il faut tester, mais je n'ai jamais écrit de script bash ... Je l'ai juste recopier, et je voulais essayer de comprendre. Merci pour votre aide ;-)
voilà le résultat de cat -n ./iptables | head -15 :
Je pense que c'est bien RETVAL qu'il faut tester, mais je n'ai jamais
écrit de script bash ... Je l'ai juste recopier, et je voulais essayer
de comprendre.
Merci pour votre aide ;-)
Je pense que c'est bien RETVAL qu'il faut tester, mais je n'ai jamais écrit de script bash ... Je l'ai juste recopier, et je voulais essayer de comprendre. Merci pour votre aide ;-)
eric_alube
voilà le résultat de cat -n ./iptables | head -15 :
Je pense que c'est bien RETVAL qu'il faut tester, mais je n'ai jamais écrit de script bash ... Je l'ai juste recopier, et je voulais essayer de comprendre.
Je l'ai trouvé, ton script :-) mais quand je fais un cat -n, moi j'ai ça :
1 #!/bin/bash 2 # 3 # Lancement du script de Firewall 4 # Arnaud de Bermingham 5 6 . /etc/init.d/functions 7 8 RETVAL=0 9 10 # Fonction pour le lancement du firewall 11 start() { 12 echo -n "Application des règles IpTables: " 13 /etc/firewall.sh 14 RETVAL=? 15 [ -eq 0 ] && touch /var/lock/subsys/firewall
[l'option -n de cat permet de numéroter les lignes]
Est-ce que tu pourrais, s'il te plaît, poster le résultat de la commande ci dessous :
grep RETVAL /etc/firewall.sh
La solution est dedans, je pense...
Merci pour votre aide ;-)
voilà le résultat de cat -n ./iptables | head -15 :
Je pense que c'est bien RETVAL qu'il faut tester, mais je n'ai jamais
écrit de script bash ... Je l'ai juste recopier, et je voulais essayer
de comprendre.
Je l'ai trouvé, ton script :-) mais quand je fais un cat -n, moi j'ai ça :
1 #!/bin/bash
2 #
3 # Lancement du script de Firewall
4 # Arnaud de Bermingham
5
6 . /etc/init.d/functions
7
8 RETVAL=0
9
10 # Fonction pour le lancement du firewall
11 start() {
12 echo -n "Application des règles IpTables: "
13 /etc/firewall.sh
14 RETVAL=?
15 [ -eq 0 ] && touch /var/lock/subsys/firewall
[l'option -n de cat permet de numéroter les lignes]
Est-ce que tu pourrais, s'il te plaît, poster le résultat de la commande
ci dessous :
Je pense que c'est bien RETVAL qu'il faut tester, mais je n'ai jamais écrit de script bash ... Je l'ai juste recopier, et je voulais essayer de comprendre.
Je l'ai trouvé, ton script :-) mais quand je fais un cat -n, moi j'ai ça :
1 #!/bin/bash 2 # 3 # Lancement du script de Firewall 4 # Arnaud de Bermingham 5 6 . /etc/init.d/functions 7 8 RETVAL=0 9 10 # Fonction pour le lancement du firewall 11 start() { 12 echo -n "Application des règles IpTables: " 13 /etc/firewall.sh 14 RETVAL=? 15 [ -eq 0 ] && touch /var/lock/subsys/firewall
[l'option -n de cat permet de numéroter les lignes]
Est-ce que tu pourrais, s'il te plaît, poster le résultat de la commande ci dessous :
grep RETVAL /etc/firewall.sh
La solution est dedans, je pense...
Merci pour votre aide ;-)
Schott
On Thu, 06 May 2004 18:17:30 +0200, Fauberteau Frédéric wrote:
Si RETVAL est censé stocker le code de retour du script /etc/firewall.sh, la ligne est RETVAL=$? et la suivante qui la teste doit être [ $RETVAL -eq 0 ] ...
Mais dans ce cas, pourquoi se casser la tête, autant tester directement: /etc/firewall.sh [ $? -eq 0 ] && touch ...
et encore mieux, le tout sur une seule ligne: /etc/firewall.sh && touch ...
man test
Tshaw Schott FLLC canal hystérique
On Thu, 06 May 2004 18:17:30 +0200, Fauberteau Frédéric wrote:
Si RETVAL est censé stocker le code de retour du script /etc/firewall.sh,
la ligne est RETVAL=$? et la suivante qui la teste doit être
[ $RETVAL -eq 0 ] ...
Mais dans ce cas, pourquoi se casser la tête, autant tester directement:
/etc/firewall.sh
[ $? -eq 0 ] && touch ...
et encore mieux, le tout sur une seule ligne:
/etc/firewall.sh && touch ...
Si RETVAL est censé stocker le code de retour du script /etc/firewall.sh, la ligne est RETVAL=$? et la suivante qui la teste doit être [ $RETVAL -eq 0 ] ...
Mais dans ce cas, pourquoi se casser la tête, autant tester directement: /etc/firewall.sh [ $? -eq 0 ] && touch ...
et encore mieux, le tout sur une seule ligne: /etc/firewall.sh && touch ...
man test
Tshaw Schott FLLC canal hystérique
Fauberteau Frédéric
On Thu, 06 May 2004 18:17:30 +0200, Fauberteau Frédéric wrote:
Si RETVAL est censé stocker le code de retour du script /etc/firewall.sh, la ligne est RETVAL=$? et la suivante qui la teste doit être [ $RETVAL -eq 0 ] ...
Mais dans ce cas, pourquoi se casser la tête, autant tester directement: /etc/firewall.sh [ $? -eq 0 ] && touch ...
et encore mieux, le tout sur une seule ligne: /etc/firewall.sh && touch ...
man test
Tshaw Schott FLLC canal hystérique déjà, je comprends pas bien à quoi servent tous ces tests ;-)
On Thu, 06 May 2004 18:17:30 +0200, Fauberteau Frédéric wrote:
Si RETVAL est censé stocker le code de retour du script /etc/firewall.sh,
la ligne est RETVAL=$? et la suivante qui la teste doit être
[ $RETVAL -eq 0 ] ...
Mais dans ce cas, pourquoi se casser la tête, autant tester directement:
/etc/firewall.sh
[ $? -eq 0 ] && touch ...
et encore mieux, le tout sur une seule ligne:
/etc/firewall.sh && touch ...
man test
Tshaw
Schott
FLLC canal hystérique
déjà, je comprends pas bien à quoi servent tous ces tests ;-)
Si RETVAL est censé stocker le code de retour du script /etc/firewall.sh, la ligne est RETVAL=$? et la suivante qui la teste doit être [ $RETVAL -eq 0 ] ...
Mais dans ce cas, pourquoi se casser la tête, autant tester directement: /etc/firewall.sh [ $? -eq 0 ] && touch ...
et encore mieux, le tout sur une seule ligne: /etc/firewall.sh && touch ...
man test
Tshaw Schott FLLC canal hystérique déjà, je comprends pas bien à quoi servent tous ces tests ;-)
Fauberteau Frédéric
Est-ce que tu pourrais, s'il te plaît, poster le résultat de la commande ci dessous :
grep RETVAL /etc/firewall.sh
La solution est dedans, je pense... Alors, si je fais grep RETVAL /etc/firewall.sh, j'ai rien ;-)
par contre pour grep RETVAL /etc/rc.d/init.d/iptables, j'obtiens ça : RETVAL=O RETVAL=? [ ${#RETVAL} -eq 0 ] && touch /var/lock/subsys/firewall RETVAL=? [ ${#RETVAL} -eq 0 ] && rm -f /var/lock/subsys/firewall RETVAL=? RETVAL=1
Est-ce que tu pourrais, s'il te plaît, poster le résultat de la commande
ci dessous :
grep RETVAL /etc/firewall.sh
La solution est dedans, je pense...
Alors, si je fais grep RETVAL /etc/firewall.sh, j'ai rien ;-)
par contre pour grep RETVAL /etc/rc.d/init.d/iptables, j'obtiens ça :
RETVAL=O
RETVAL=?
[ ${#RETVAL} -eq 0 ] && touch /var/lock/subsys/firewall
RETVAL=?
[ ${#RETVAL} -eq 0 ] && rm -f /var/lock/subsys/firewall
RETVAL=?
RETVAL=1
Si c'est le cas, le test est réussi et cela signifie que le fichier /var/lock/subsys/firewall n'existe pas, alors on le crée avec "touch /var/lock/subsys/firewall".
Sinon, si la longueur de RETVAL n'est pas nulle, le test a échoué, et on n'exécute pas la création de /var/lock/subsys/firewall
Le rôle de ce fichier "/var/lock/subsys/firewall" est de signaler à toute application qui vient vérifier son existence, que le firewall est activé, sinon existe.
Les autres tests, ont un rôle analogue, mais il faudrait préciser mieux le contexte.
Voila, très rapidement, ce que signifiaient ces test :-)
Pour d'autres questions sur le shell bash (par exemple, mais pas seulement), il y a la page de man, bien sûr, mais il y a aussi le forum fr.comp.os.unix sur lequel tu trouveras tout plein d'infos.
Cordialement,
eric bachard
**pour t'amuser , tu peux essayer les commandes suivantes en les retapant successivement (et en appuyant sur entrée, bien sûr...)
valeur00
echo $valeur
echo ${#valeur}
valeur0
echo ${#valeur}
--
Bonjour,
Alors, si je fais grep RETVAL /etc/firewall.sh, j'ai rien ;-)
Ooops...
par contre pour grep RETVAL /etc/rc.d/init.d/iptables, j'obtiens ça :
RETVAL=O
On initialise RETVAL à 0
un echo $RETVAL donnerait 0
Attention, les lignes semblent se suivre, mais cela n'est pas sûr du tout...
RETVAL=?
Ici, RETVAL prend la valeur du dernier code retourné en sortie d'un
shell ou d'une fonction, grâce au symbole "?".
Si c'est le cas, le test est réussi et cela signifie que le fichier
/var/lock/subsys/firewall n'existe pas, alors on le crée avec
"touch /var/lock/subsys/firewall".
Sinon, si la longueur de RETVAL n'est pas nulle, le test a échoué, et on
n'exécute pas la création de /var/lock/subsys/firewall
Le rôle de ce fichier "/var/lock/subsys/firewall" est de signaler à
toute application qui vient vérifier son existence, que le firewall est
activé, sinon existe.
Les autres tests, ont un rôle analogue, mais il faudrait préciser mieux
le contexte.
Voila, très rapidement, ce que signifiaient ces test :-)
Pour d'autres questions sur le shell bash (par exemple, mais pas
seulement), il y a la page de man, bien sûr, mais il y a aussi le forum
fr.comp.os.unix sur lequel tu trouveras tout plein d'infos.
Cordialement,
eric bachard
**pour t'amuser , tu peux essayer les commandes suivantes en les
retapant successivement (et en appuyant sur entrée, bien sûr...)
Si c'est le cas, le test est réussi et cela signifie que le fichier /var/lock/subsys/firewall n'existe pas, alors on le crée avec "touch /var/lock/subsys/firewall".
Sinon, si la longueur de RETVAL n'est pas nulle, le test a échoué, et on n'exécute pas la création de /var/lock/subsys/firewall
Le rôle de ce fichier "/var/lock/subsys/firewall" est de signaler à toute application qui vient vérifier son existence, que le firewall est activé, sinon existe.
Les autres tests, ont un rôle analogue, mais il faudrait préciser mieux le contexte.
Voila, très rapidement, ce que signifiaient ces test :-)
Pour d'autres questions sur le shell bash (par exemple, mais pas seulement), il y a la page de man, bien sûr, mais il y a aussi le forum fr.comp.os.unix sur lequel tu trouveras tout plein d'infos.
Cordialement,
eric bachard
**pour t'amuser , tu peux essayer les commandes suivantes en les retapant successivement (et en appuyant sur entrée, bien sûr...)