У меня есть несколько старых скриптов, которые я пытаюсь обновить. Часть кода сокращается до:
export X=`(echo "abc"; echo "def")`
echo $X
который дает ожидаемый результат:
abc def
Теперь интернет говорит мне, $()
что мне нужно использовать обратные ссылки , но когда я пытаюсь:
export X=$((echo "abc"; echo "def"))
X
не установлен и я получаю ошибку:
bash: echo "abc"; echo "def": syntax error: invalid arithmetic operator (error token is ""abc"; echo "def"")
Что я делаю неправильно?
`...`
и$(...)
запускайте подоболочку в любом случае, так что внутренняя(...)
часть не нужна (тратит впустую процесс). Вам понадобится место в таких вещах, как,$( (...); (...) )
например, (где могут понадобиться внутренние подоболочки).Пытаться
export X="$(echo "abc"; echo "def")"
источник
ksh
иbash
являются единственными исключениями).