J'ai d'anciens scripts que j'essaie de mettre à jour. Une partie du code se condense en:
export X=`(echo "abc"; echo "def")`
echo $X
ce qui donne la sortie attendue:
abc def
Maintenant, Internet me dit que les backticks sont supprimés $(), mais que lorsque j'essaie:
export X=$((echo "abc"; echo "def"))
X n'est pas défini et j'obtiens l'erreur:
bash: echo "abc"; echo "def": syntax error: invalid arithmetic operator (error token is ""abc"; echo "def"")
Qu'est-ce que je fais mal?
`...`et$(...)démarrer un sous-shell de toute façon, de sorte que l'intérieur(...)n'est pas nécessaire (gaspiller un processus). Vous auriez besoin d'espace dans des choses comme$( (...); (...) )par exemple (où les sous-coques internes peuvent être nécessaires).