Commande bash awk, comment mettre en variables.
Résolu/Fermé
A voir également:
- Debian adduser commande introuvable
- Invite de commande - Guide
- Commande terminal mac - Guide
- Adduser commande introuvable ✓ - Forum Shell
- 'Pip' n’est pas reconnu en tant que commande interne ✓ - Forum Python
- Facebook rencontre introuvable - Forum Facebook
2 réponses
mamiemando
Messages postés
33553
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
7 mars 2025
7 830
Modifié le 4 janv. 2022 à 13:43
Modifié le 4 janv. 2022 à 13:43
Bonjour,
Pour déclarer une variable en shell, il ne faut pas mettre d'espace autour de l'opérateur
En général, pour injecter le contenu d'une variable shell dans une commande shell, tu peux utiliser l'opérateur
Heureusement,
Après, je ne connais pas le contexte de ta question, mais si le but est juste de concaténer une saisie avec une chaîne, je ne vois pas trop l'utilité de
toto.sh
Exécution :
Bonne chance
Pour déclarer une variable en shell, il ne faut pas mettre d'espace autour de l'opérateur
=:
var="toto" echo $var # Affiche toto
En général, pour injecter le contenu d'une variable shell dans une commande shell, tu peux utiliser l'opérateur
${var}(en abrégé
$var). Mais ici, c'est plus compliqué, car en fait on veut injecter une variable shell dans un code awk et du coup
$n'a pas le même sens partout. On pourrait éventuellement s'en sortir avec des
evalet en échappant les
$mais ce serait assez illisible et pénible à écrire.
Heureusement,
awkpermet de récupérer facilement une variable shell et de l'injecter dans les instructions passées à
awk, comme le montre cet exemple :
var="/webroot" echo | awk -v r=$root '{ print "shell variable $root value is " r}'
Après, je ne connais pas le contexte de ta question, mais si le but est juste de concaténer une saisie avec une chaîne, je ne vois pas trop l'utilité de
awk. Tu peux directement écrire un petit script shell :
toto.sh
#!/bin/bash read saisie echo $1$saisie
Exécution :
(mando@silk) (~) $ chmod a+x toto.sh
(mando@silk) (~) $ ./toto.sh toto
tata
tototata
Bonne chance
dubcek
Messages postés
18767
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
5 mars 2025
5 628
4 janv. 2022 à 16:08
4 janv. 2022 à 16:08
hello
$ var="lulu"
$ awk -v x="$var" '$0=$0 x' fichier.txt
ablulu
cdlulu
eflulu
ghlulu
$ var="lolo"
$ awk -v x="$var" '$0=$0 x' fichier.txt
ablolo
cdlolo
eflolo
ghlolo
$
Modifié le 5 janv. 2022 à 12:45
J'ai un fichier contenant :
Quand je mets la commande :
J'obtiens :
C'est ce que je voulais, mais à la place de je veux mettre une variable. Donc je mets :
(La première ligne du est bien stocké dans la variable
var
).Mais cela ne fonctionne pas, j'ai essayé avec plusieurs syntaxe mais ça bloque la variable n'est pas lu comme une variable :(