Попытка получить доступ к переменной среды (массив), объявленный в ~/.profile из сценария оболочки

Я бы генерировал команды с помощью awk, а затем передал бы их в bash:

find /data/DIV5/SASC/e042_ctcl/input/*/Clean_data/*/*/*.fq.gz -type f | \
awk '{printf "mkdir -p `dirname %s`\nln -s %s ./%s \n", substr($0, 27), $0, substr($0, 27)}'

Это генерирует список команд, я бы сначала контролировал их, а затем передал бы их в bash. Полная команда будет:

find /data/DIV5/SASC/e042_ctcl/input/*/Clean_data/*/*/*.fq.gz -type f | \
awk '{printf "mkdir -p `dirname %s`\nln -s %s ./%s \n", substr($0, 27), $0, substr($0, 27)}' | bash
1
16.09.2014, 01:37
1 ответ

массивы не являются переменными окружающей среды, и поэтому нет (и не могут быть ) Унаследовано процессы детей (например, сценарии) от родителей. Вы должны «создавать [ваш массив] с нуля каждый раз, когда вы запускаете свой скрипт». Я не понимаю, почему вы рассматриваете это как трудности. Если значения постоянны, как вы говорите, то все, что должно произойти Для этих ценностей для чтения в память из скрипта. Если ваша забота заключается в том, что код для инициализации массива подвездит ваш скрипт, Поместите его в отдельный файл сценария и назовите его с помощью «. «Или» источник ».

Я не знаю, где вы поняли, что «единственный здравый способ поставить [SIC] переменную (Даже массив) - это ~ / .profile . "

2
27.01.2020, 23:38

Теги

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