> For the complete documentation index, see [llms.txt](https://ru.gentee.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ru.gentee.org/syntax/running-programs.md).

# Запуск программ

В языке Gentee существует специальная команда **$** для запуска приложений и команд операционной системы с указанными параметрами. Данная команда запускает весь следующий за ней текст до конца строки. Между символом **$** и командной строкой должен присутствовать пробел. Если данная команда используется в выражении, то она перехватывает стандартный вывод и возвращает его в виде строки. В противном случае, стандартный вывод будет виден в консоли. Можно использовать подстановку выражений с помощью **%{Expression}** как в строке с обратными кавычками. Если какой-то параметр содержит пробел, то его нужно заключить в любые кавычки - *"a b", 'c d', \`e f\`*. Если запускаемое приложение или команда завершилось с кодом ошибки, отличным от нуля, то скрипт также прекратит работу и возвратит ошибку.

```
Command = "$ " { unicode_linechar | "%{" Expression "}" | "${" identifier "}" }
```

```
run str {
   $ dir
   str name = $ echo "John Smith"
   return $ echo My name is %{name}
}
```

## Переменные окружения

Язык Gentee позволяет вам легко получать и присваивать значения переменных окружения. Для этого укажите знак **$** перед именем переменной. Кроме этого, вы можете подставлять переменные окружения с помощью конструкции **${ENV\_NAME}** в командах запуска **$** и строках с обратными кавычками. Эта запись короче, чем *%{ $ENV\_NAME }*. Переменные окружения всегда имеют строковый тип, но вы можете присваивать им значения типа **str**, **int** и **bool**.

```
EnvVariable = "$" identifier
```

```
run str {
    $MYVAR = `Go path: ${GOPATH}` + $GOROOT
    return $ echo ${MYVAR}
}
```
