[Linux] Bash, option -c et paramètres
Daniel Huhardeaux
daniel.huhardeaux@::1
Mar 14 Oct 23:32:38 CEST 2025
Bonjour
j'ai un soucis avec l'option -c de bash dans un script. Si je fais dans
un terminal
dh@::1:~bash -c 'socat -u TCP-LISTEN:"$0",reuseaddr,fork PIPE:"$1"'
8880 "/tmp/fifo.peerstatus"
j'obtiens bien
dh@::1:~$ ps ax|grep socat
485960 pts/8 S+ 0:00 socat -u TCP-LISTEN:8880,reuseaddr,fork
PIPE:/tmp/fifo.peerstatus
Mais exécuté dans un script
socat() {
bash -c 'socat -u TCP-LISTEN:"$0",reuseaddr,fork PIPE:"$1"'
$publishport $mypath
}
J'obtiens
2025/10/14 23:10:27 socat[483789] E getaddrinfo("NULL",
"/tmp/fifo.peerstatus", {0x01,2,1,0}, {}): Servname not supported for
ai_socktype
Le port est visiblement accepté $0=$publishport mais $1=$mypath non,bien
que la valeur affichée dans l'erreur est la bonne.
Si je remplace $0 et $1 par leur valeur dans le script, c'est fonctionnel.
dh@::1:~$ bash --version
GNU bash, version 5.2.37(1)-release (x86_64-pc-linux-gnu)
Si une bonne âme avait une idée de l'origine du problème et la
partagerai, avec plaisir je lirais :)
--
Daniel
Plus d'informations sur la liste de diffusion linux