Исходный оператор не работает внутри скобок в bash - PullRequest
1 голос
/ 04 мая 2010

Я бы хотел включить файл конфигурации в мой bash-скрипт с двумя условиями:

  1. имя файла конфигурации создается на лету и сохраняется в переменной, а
  2. в случае, если файл конфигурации не существует, скрипт должен завершиться ошибкой:

config.cfg:

 CONFIGURED=yes

test.sh:

#!/bin/sh
$CFG=config.cfg

echo Source command doesn't work here:
[ -f $CFG ] && ( source $CFG ) || (echo $CFG doesnt exist; exit 127)
echo $CONFIGURED

echo ... but works here:
source $CFG
echo $CONFIGURED

Что не так в [...] утверждении?

1 Ответ

7 голосов
/ 04 мая 2010

( ... ) запускает команды в отдельной подоболочке. Если вы хотите запускать команды в той же оболочке, если это возможно, используйте { ... ; }.

...