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).Essayer
export X="$(echo "abc"; echo "def")"
la source
ksh
etbash
étant les seules exceptions).