Problème concaténation bash
Fermé
papaa19
-
Modifié par mamiemando le 5/06/2013 à 21:17
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 5 juin 2013 à 21:20
mamiemando Messages postés 33357 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 14 novembre 2024 - 5 juin 2013 à 21:20
A voir également:
- Problème concaténation bash
- Bash permission non accordée - Forum Shell
- Bash écrire dans un fichier - Forum Shell
- Bingo bash free - Télécharger - Divers Jeux
- Bash path - Astuces et Solutions
- Bash: adduser : commande introuvable ✓ - Forum Debian
5 réponses
mamiemando
Messages postés
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
4 juin 2013 à 21:44
4 juin 2013 à 21:44
A priori les "$NMAPTARGETS$=" et de manière générale toutes les variables entourées de "$" sont suspectes. En admettant que $NMAPTARGETS$ vaille "toto" que devrait valoir "$NMAPTARGETS$=" ?
Si c'est sensé valoir "toto=", il faudrait plutôt écrire ${NMAPTARGETS}
Bonne chance
Si c'est sensé valoir "toto=", il faudrait plutôt écrire ${NMAPTARGETS}
Bonne chance
Si $NMAPTARGETS$ vaut "toto" alors il faut qu'il y ait écrit dans le fichier :
$NMAPTARGETS$=toto
Le script permet dans changer les variables d'un fichier.
$NMAPTARGETS$=toto
Le script permet dans changer les variables d'un fichier.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
5 juin 2013 à 09:31
5 juin 2013 à 09:31
Salut,
cependant, il me dit que j'ai un problème de concaténation quand j'utilise cette variable
Quel est le message d'erreur exact qui s'affiche ?
Peux-tu rajouter après le shebang set -x et regarder comment sont interprétées tes variables, à défaut de comprendre colles-nous ici le résultat, on essaiera d'analyser ça...
cependant, il me dit que j'ai un problème de concaténation quand j'utilise cette variable
Quel est le message d'erreur exact qui s'affiche ?
Peux-tu rajouter après le shebang set -x et regarder comment sont interprétées tes variables, à défaut de comprendre colles-nous ici le résultat, on essaiera d'analyser ça...
#!/bin/bash #script pour configurer set -x
Le message d'erreur exact est : sed: -e expression #1, char 40: unknown option to 's'
Voilà les résultat du set -x :
J'ai rentré l'adresse réseau 10.10.10.10/24 et voilà :
+ sudo sed -i 's/\($NMAPTARGETS$=\).*/\110.10.10.10\/24/' /usr/local/shinken/etc/resource.cfg
+ echo -e '\n\tVous avez ajouté l'\''adresse réseau 10.10.10.10/24.\n'
La variable i devient :
+ i='$NMAPTARGETS$=10.10.10.10/24'
Après je rajoute une adresse IP (8.8.8.8) et voilà ce qui se passe :
+ sudo sed -i 's/\($NMAPTARGETS$=10.10.10.10/24 \).*/\18.8.8.8/' /usr/local/shinken/etc/resource.cfg
sed: -e expression #1, char 39: unknown option to 's'
+ echo -e '\n\tVous avez ajouté l'\''adresse IP 8.8.8.8.\n'
La variable i devient :
+ i='$NMAPTARGETS$=10.10.10.10/24 8.8.8.8'
C'est bien ce que je souhaite...
Voilà les résultat du set -x :
J'ai rentré l'adresse réseau 10.10.10.10/24 et voilà :
+ sudo sed -i 's/\($NMAPTARGETS$=\).*/\110.10.10.10\/24/' /usr/local/shinken/etc/resource.cfg
+ echo -e '\n\tVous avez ajouté l'\''adresse réseau 10.10.10.10/24.\n'
La variable i devient :
+ i='$NMAPTARGETS$=10.10.10.10/24'
Après je rajoute une adresse IP (8.8.8.8) et voilà ce qui se passe :
+ sudo sed -i 's/\($NMAPTARGETS$=10.10.10.10/24 \).*/\18.8.8.8/' /usr/local/shinken/etc/resource.cfg
sed: -e expression #1, char 39: unknown option to 's'
+ echo -e '\n\tVous avez ajouté l'\''adresse IP 8.8.8.8.\n'
La variable i devient :
+ i='$NMAPTARGETS$=10.10.10.10/24 8.8.8.8'
C'est bien ce que je souhaite...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
5 juin 2013 à 18:23
5 juin 2013 à 18:23
Le problème c'est le slash dans "$NMAPTARGETS$=10.10.10.10/24" ;-((
Remplace le délimiteur par défaut de sed comme ceci :
Remplace le délimiteur par défaut de sed comme ceci :
sed -i 's/#($NMAPTARGETS$=\).*#\1'$target'/'$mask'#'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33357
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
14 novembre 2024
7 799
5 juin 2013 à 21:20
5 juin 2013 à 21:20
Ben vu que $ est un métacaractère en shell et dans sed, à mon avis si on parle vraiment du caractère $ il faut rajouter des \ pour échapper ce caractère (au moins \$ si ce n'est pas \\$).
Car sinon shell peut croire qu'on parle du contenu de la variable $NMAPTARGETS suivi du contenu de la variable $= (qui n'ayant pas de sens doit être compris comme le caractère $ suivi de =). Et en sed "$=" ça veut dire que derrière le caractère fin de ligne on s'attend à trouver le caractère =, ce qui n'est a priori pas ce que tu veux écrire....
Bonne chance
Car sinon shell peut croire qu'on parle du contenu de la variable $NMAPTARGETS suivi du contenu de la variable $= (qui n'ayant pas de sens doit être compris comme le caractère $ suivi de =). Et en sed "$=" ça veut dire que derrière le caractère fin de ligne on s'attend à trouver le caractère =, ce qui n'est a priori pas ce que tu veux écrire....
Bonne chance