Введение
В этом практическом занятии будут рассмотрены основы переменных окружения в Unix-программах. Переменные окружения используются для передачи конфигурационных данных программам.
Переменные окружения
В этом практическом занятии вам нужно будет задавать, получать и перечислять переменные окружения.
- Используйте
os.Setenv, чтобы задать пару ключ/значение. - Используйте
os.Getenv, чтобы получить значение для ключа. - Используйте
os.Environ, чтобы перечислить все пары ключ/значение в окружении. - Используйте
strings.SplitN, чтобы разделить ключ и значение.
## Запуск программы показывает, что мы получаем значение
## для `FOO`, которое мы задали в программе, но что
## `BAR` пусто.
$ go run environment-variables.go
FOO: 1
BAR:
## Список ключей в окружении зависит от вашей
## конкретной машины.
TERM_PROGRAM
PATH
SHELL
...
FOO
## Если мы сначала зададим `BAR` в окружении, то при
## запуске программы оно получит это значение.
$ BAR=2 go run environment-variables.go
FOO: 1
BAR: 2
...
Ниже представлен полный код:
// [Переменные окружения](https://en.wikipedia.org/wiki/Environment_variable)
// - это универсальный механизм для [передачи конфигурационных
// данных Unix-программам](https://www.12factor.net/config).
// Посмотрим, как задавать, получать и перечислять переменные окружения.
package main
import (
"fmt"
"os"
"strings"
)
func main() {
// Чтобы задать пару ключ/значение, используйте `os.Setenv`.
// Чтобы получить значение для ключа, используйте `os.Getenv`.
// Если ключ отсутствует в окружении, то будет возвращена
// пустая строка.
os.Setenv("FOO", "1")
fmt.Println("FOO:", os.Getenv("FOO"))
fmt.Println("BAR:", os.Getenv("BAR"))
// Используйте `os.Environ`, чтобы перечислить все пары
// ключ/значение в окружении. Возвращается срез строк в
// формате `KEY=value`. Можно использовать `strings.SplitN`,
// чтобы получить ключ и значение. Здесь мы выводим все ключи.
fmt.Println()
for _, e := range os.Environ() {
pair := strings.SplitN(e, "=", 2)
fmt.Println(pair[0])
}
}
Резюме
В этом практическом занятии вы узнали, как задавать, получать и перечислять переменные окружения в Unix-программах. Это фундаментальный концепт, который используется многими программами для передачи конфигурационных данных.