Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

awk / nawk : passage de paramètres avec espaces

2 réponses
Avatar
Tittom
Bonjour

Je me casse les dents sur une histoire de passage de param=E8tres =E0
nawk, dans un script shell. Voici ce que je souhaite faire...

Mon shell contient un appel =E0 nawk, de cette fa=E7on :

=3D=3D=3D=3D=3D=3D=3D=3D script.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
nawk -f - -- $* <<BLOC_NAWK
BEGIN {
var=3DARGV[1]
print("." var ".")
}
BLOC_NAWK
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Je lance mon script en lui passant en param=E8tre des phrases, pouvant
contenir des espaces. Je souhaite r=E9cup=E9rer chaque phrase dans awk, en
pr=E9servant les espaces. Par exemple :

Commande : script.sh "je contiens des espaces " " moi aussi "
R=E9sultat esp=E9r=E9 :
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
.je contiens des espaces .
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Mais j'obtiens ceci :
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
.je.
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


J'ai essay=E9 d'entourer le "$*" avec des guillemets, mais j'obtiens la
concat=E9nation des deux phrases - avec espaces :
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
.je contiens des espaces moi aussi .
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


Je ne vois pas comment proc=E9der pour obtenir
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
.je contiens des espaces .
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

Quelqu'un a une id=E9e ?
Merci pour vos r=E9ponses

Tittom

2 réponses

Avatar
Luc.Habert.00__arjf
Tittom :

nawk -f - -- $* <<BLOC_NAWK


Toujours utiliser « "$@" » et non « $* », sauf dans le cas sur mille où on
veut vraiment « $* ».

Avatar
Tittom
On 31 mai, 14:42, (Luc Habert)
wrote:

nawk -f - -- $* <<BLOC_NAWK


Toujours utiliser « "$@" » et non « $* », sauf dans le cas sur mi lle où on
veut vraiment « $* ».


J'ai essayé en utilisant donc : nawk -f - -- "$@" <<BLOC_NAWK
J'obtiens bien le comportement espéré !

Le $@ était la brique qui me manquait, merci de me l'avoir
indiquée :o)

Tittom