[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [un peu HS] argc, argv et exec*()



Bonjour,

Je crois que le problème vient des simple quotes surnuméraires
en début et fin d'expression

BERTRAND Joël, on 2020-11-01 10:34:14 +0100:
> 	Sur la console, j'obtiens bien :
> 0: awk
> 1: 'BEGIN { I=0; } /<comp ref=.*>/ { I=I+1; } { if (I>0) print; } /<\/comp>/ { I=I-1; }'
ici: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

	$ ls
	alimentations_haute_tension.xml  truc  truc.c
	
	$ ./truc 
	0: awk
	1: BEGIN { I=0; } /<comp ref=.*>/ { I=I+1; } { if (I>0) print; } /<\/comp>/ { I=I-1; }
	2: alimentations_haute_tension.xml
	3: (null)

> 2: alimentations_haute_tension.xml
> 3: (null)
> 
> 	Donc argc[0] vaut awk, argc[1] vaut bien le contenu du script awk et
> argc[2] le nom du xml à analyser.
> 
> 	Résultat :
> 
> "awk: ligne de commande:1: 'BEGIN { I=0; } /<comp ref=.*>/ { I=I+1; } { if (I>0) print; } /<\/comp>/ { I=I-1; }'"

En ajoutant les simple quotes en Debian Sid, j'obtiens bien une
erreur similaire, modulo la localisation:

	$ ./truc
	0: awk
	1: 'BEGIN { I=0; } /<comp ref=.*>/ { I=I+1; } { if (I>0) print; } /<\/comp>/ { I=I-1; }'
	2: alimentations_haute_tension.xml
	3: (null)
	awk: cmd. line:1: 'BEGIN { I=0; } /<comp ref=.*>/ { I=I+1; } { if (I>0) print; } /<\/comp>/ { I=I-1; }'
	awk: cmd. line:1: ^ invalid char ''' in expression

J'imagine que la solution de contournement fait l'affaire, mais
si ça peut éclairer votre lanterne...

Bonne soirée,
-- 
Étienne Mollier <etienne.mollier@mailoo.org>
Old rsa/3072: 5ab1 4edf 63bb ccff 8b54  2fa9 59da 56fe fff3 882d
New rsa/4096: 8f91 b227 c7d6 f2b1 948c  8236 793c f67e 8f0d 11da
Sent from /dev/pts/3, please excuse my verbosity.

Attachment: signature.asc
Description: PGP signature


Reply to: