[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