Mam kilka starych skryptów, które próbuję zaktualizować. Część kodu skraca się do:
export X=`(echo "abc"; echo "def")`
echo $X
co daje oczekiwany wynik:
abc def
Teraz Internet mówi mi, $()
że nie mogę użyć backsticksa, ale kiedy próbuję:
export X=$((echo "abc"; echo "def"))
X
nie jest ustawiony i pojawia się błąd:
bash: echo "abc"; echo "def": syntax error: invalid arithmetic operator (error token is ""abc"; echo "def"")
Co ja robię źle?
`...`
i tak$(...)
rozpocząć podpowłokę, więc wewnętrzna(...)
nie jest potrzebna (marnowanie procesu).$( (...); (...) )
Potrzebowałbyś miejsca w takich rzeczach, jak na przykład (gdzie mogą być potrzebne wewnętrzne podpowłoki).Próbować
export X="$(echo "abc"; echo "def")"
źródło
ksh
ibash
są jedynymi wyjątkami).