Инициализация переменной Bash - PullRequest
0 голосов
/ 28 апреля 2018

Могут ли переменные, инициализированные в условиях оператора (или любого другого типа цикла или функции), использоваться позже в сценарии? Следующий код, кажется, работает ... но я хотел бы проверить, так как я не использую этот тип результата.

if ( <true condition> ); then
    VAR1=1
fi

echo $VAR1

Реальный выход: 1

Ожидаемый результат: не определено (поскольку переменная не была инициализирована

1 Ответ

0 голосов
/ 28 апреля 2018

Да, все переменные bash по умолчанию размещены в глобальной области видимости. Вам просто нужно быть осторожным с подоболочками. Вот рабочий пример:

$ cat foo
if true; then
    VAR=1
fi

echo $VAR

$ bash foo
1

В вашем случае он покажет пустую строку, потому что вы ссылаетесь VAR1 вместо VAR. Используйте ShellCheck , чтобы избежать подобных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...