экспорт (сохранение) и импорт (исходные) переменные оболочки

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

$ inp="cop1010 ADD atra522,Allison Track,CT,canada"
$ IFS=, fields=($inp)
$ echo ${fields[0]}
cop1010 ADD atra522
$ echo ${fields[1]}
Allison Track
$ echo ${fields[2]}
CT
$ echo ${fields[3]}
canada
$ IFS=\  cmd=(${fields[0]})
$ echo ${cmd[0]}
cop1010
$ echo ${cmd[1]}
ADD
$ echo ${cmd[2]}
atra522
$ 

Вы можете установить их все как переменные (вместо того, чтобы повторять их), и никогда не нужно создавать подоболочку для запуска awk , cut или любого другого инструмента.

2
20.05.2016, 12:21
1 ответ
$ declare -p > my_environment

Позже, внутри barscript:

. my_environment

declare -p выводит переменные окружения в форме, которая может быть выполнена оболочкой, включая кавычки и экранирование переменных по мере необходимости.

$ foobar='"some double-quoted text"'
$ echo $foobar 
"some double-quoted text"
$ declare -p foobar
declare -- foobar="\"some double-quoted text\""

BTW, если вы не хотите выводить все ваше окружение, это не обязательно. Просто назовите переменные, которые вы хотите вывести, в командной строке declare -p:

$ declare -p HOME PATH foobar
declare -x HOME="/home/cas"
declare -x PATH="/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11"
declare -- foobar="\"double-quoted-text\""

или передайте через grep -v, чтобы исключить определенные переменные, которые вы не хотите видеть в выводе.

Чтобы получить только экспортированные переменные:

declare -p -x > my_environment

Для получения дополнительной информации смотрите help declare в bash.

6
27.01.2020, 21:56

Теги

Похожие вопросы