Intereting Posts
Правильная конструкция JSON Каковы некоторые практические цели использования renice? Запустите команду, сохраненную в переменной, чтобы эхо в файл / etc / network / interfaces valdiation Независимо от того, выключен ли монитор, не обращаясь к X или / proc Как сортировать имена файлов, содержащие несовместимые суффиксы, используя bash Что-то переименовывает мое соединение vlan Обходной путь для изменения поведения привязки между свистящими и jessie? Каждый раз, когда я перезапускаю свой сервер Digital Ocean, изменения .ssh / authorized_keys localhost cron issue, log показывает, что cmd запущен, но сценарий фактически не запускался. Что я делаю неправильно? Как я могу переместить каталог (и все вложенные файлы / каталоги), но переместить элементы в алфавитном порядке? Начальное правило iptable и операция knockd в vps Проблемы с ncurses-devel в SuSE Linux Enterprise Desktop 11 Профиль «Chain» shells и файлы runcom? Есть ли какая-либо прибыль при использовании непрерывного пространства в lvm?

Невозможно использовать переменную окружения Array

Я не знаю, почему я не могу использовать переменную env array внутри скрипта?
В моем ~/.bashrc или ~/.profile

 export HELLO="ee" export HELLOO=(aaa bbbb ccc) 

в оболочке:

 > echo $HELLO ee > echo $HELLOO aaa > echo ${HELLOO[@]} aaa bbbb ccc 

в скрипте:

 #!/usr/bin/env bash echo $HELLO echo $HELLOO echo ${HELLOO[@]} --- # Return ee 

Зачем ?

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

Вы можете сделать так, как это делает оболочка с $PATH , которая по существу представляет собой массив путей; превратите массив в строку, ограниченную каким-то конкретным символом, который иначе не присутствует в значениях массива:

 $ arr=( aa bb cc "some string" ) $ arr=$( printf '%s:' "${arr[@]}" ) $ echo $arr aa:bb:cc:some string: 

Затем удалите последний символ и экспортируйте его:

 $ arr=${arr%:} $ export arr 

Альтернативой передаче значений сценарию с использованием переменных среды является (очевидно?) Использование аргументов командной строки:

 arr=( aa bb cc ) ./some_script "${arr[@]}" 

Затем скрипт будет обращаться к переданным аргументам один за другим, используя позиционные параметры $1 , $2 , $3 т. Д. Или используя $@ :

 printf 'First I got "%s"\n' "$1" printf 'Then I got "%s"\n' "$2" printf 'Lastly there there was "%s"\n' "$3" for opt in "$@"; do printf 'I have "%s"\n' "$opt" done 

Массивы специфичны для bash. Переменные среды представляют собой пары имя-значение.

Прочтите спецификации переменных среды , в которых, в частности, говорится:

Значение переменной среды – это строка символов. Для C-языковой программы массив строк, называемый средой, должен быть доступен, когда процесс начинается. Массив указывается внешней переменной environ , которая определяется как:

 extern char **environ; 

Эти строки имеют форму name = value ; имена не должны содержать символ '='.