Script Shell : Extraire une variable par cut [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
7 octobre 2011
-
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
-
Bonjour Messieurs Dames :)

Je viens à vous pour une question un peu technique ^^
Et d'autant plus pour moi qui suis plus bidouilleur que codeur ^^'

J'aimerais créer une variable à partir d'une extraction, pour ce faire je passe par cut, mais l'enchainement dans mon script pose problème.

Je n'arrive pas à bien utiliser le echo et le délimiter de cut en guillemet ""

Ma donnée à extraire étant "monfichier"=>
<?xml version="1.0" encoding="utf-16" standalone="yes"?> <values> <add key="bla" value="azerty"/> </values>


En 10ème délimiter guillemet donc.

Mon cut passe bien avec cette commande, bien que je doute sur ma manière d'échapper les guillemets :
#cut -d '"' -f10 monfichier
#azerty

Cependant quand je souhaite l'utiliser avec un echo puis un cat, j'imprime la commande et non la donnée à extraire.

echo cut -d '"' -f10 monfichier >> test 
cat test


J'aime même essayé en awk d'après mes recherches internet

echo awk -F\" 'NR==2{print $10}' monfichier >> test 
cat test


Mais mon fichier test contient toujours désespérément la commande employée et non la donnée à extraire :(


Au final j'aimerais donc simplement extraire la donnée d'une première variable afin de la déclarer comme étant elle même une variable.
Tout ce ci directement dans le script, ou à défaut dans des fichiers que je créerais / supprimerais par le script.




2 réponses

Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
948
C'est une syntaxe EQUIVALENTE sous bash, bien plus lisible que ces infâmes backquotes.
(d'autant plus que je suis mal voyant :(


D'autre part, ta manière de traiter est petit peu pourrie.
Utilise xslt et un processeur XSLT comme xalan
Voir
https://haypo.developpez.com/tutoriel/xml/xslt/

Johan Daine
Messages postés
391
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
5 février 2013
51
il faut mettre des back-quote (atl GR + 7) autour de la commande cut à executer
echo cut -d '"' -f10 monfichier >> test 

devient
echo 'cut -d '"' -f10 monfichier' >> test 
Messages postés
36299
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 281
Ou plus simplement :

var="$(cut -d '"' -f10 monfichier)"

;-))
Messages postés
391
Date d'inscription
vendredi 22 avril 2011
Statut
Membre
Dernière intervention
5 février 2013
51
merde, faut que je me mette à jour ... depuis quand les back quote ont été "remplacé" ?
Messages postés
18246
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
21 juillet 2021
5 327
je dirais depuis l'existence du Korn shell, ksh
Messages postés
9
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
7 octobre 2011

nickel cette solution =>
echo $(cut -d '"' -f10 monfichier) >> test 


Voilà donc comment je m'y suis pris =>

echo ${mapremierevariablepleinedeteste} >> dossier/monfichier 
cat dossier/monfichier 
masecondevariable=$(cut -d '"' -f10 dossier/monfichier) 
rm dossier/monfichier 


Merci à tout les deux en tout cas :D
Messages postés
36299
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 281
Tu peux éviter les fichiers temporaires...

$ echo ${mapremierevariablepleinedeteste}
<?xml version="1.0" encoding="utf-16" standalone="yes"?> <values> <add key="bla" value="azerty"/> </values>

$ masecondevariable=$(cut -d '"' -f10 <<<${mapremierevariablepleinedeteste})

$ echo ${masecondevariable}
azerty

;-))