Без использования source
для загрузки другого файла конфигурации / скрипта Bash, какой самый простой способ найти значение переменной Bash, определенной в другом (временном) файле?
Я видел похожие фрагменты с использованием cat
+ while
, grep
и даже eval
, но ни один из них не выглядит очень чистым и не может быть применен к этому сценарию, кажется ...
Например:
update.sh
хочет загрузить и проверить значение переменной LATEST
в файле /tmp/config
, прежде чем решить, следует ли продолжить процесс обновления.
Обновлено (добавлено больше контекста ):
#!/bin/bash
## current config (includes an existing CONFIG_BUILD variable) ##
source config
## compability for updating config ##
UPDATER_BUILD="FEB2020"
## retrieve latest version of config online ##
wget -O /tmp/config http://mirrors.example.com/config-boilerplate
## ensure retrieved config boilerplate is compatible with current updater ##
CONFIG_LATEST=$(source /tmp/config; echo $CONFIG_BUILD)
if [[ "$CONFIG_LATEST" != "$UPDATER_BUILD" ]]; then
echo -e "Sorry, this updater is outdated or incompatible."
exit 1
fi
Обновлено (снова): FML, мне не хватало точки с запятой в подоболочке. Таким образом, источник subshell на самом деле работает нормально без каких-либо конфликтов, несмотря на то, что имя VAR уже получено ... все это говорит о том, что если кто-то еще сможет комментировать решения, не являющиеся источниками, было бы здорово. Я искал несколько дней и не много обсуждений по этой теме c, хотя, наконец, нашел одно:
Могу ли я экспортировать переменную в среду из сценария bash без его поиска?