Экспорт оболочки не работает - PullRequest
0 голосов
/ 26 марта 2011

Есть программа оболочки.Программа оболочки:

  1. Содержит команду (которая является другой программой оболочки), которая запускает и печатает три значения.
  2. Затем эти три значения экспортируются.
  3. Вв последний раз исполняется файл Perl (используются экспортированные значения).

Все это происходит в файле оболочки.

Моя проблема заключается в том, что экспорт не выполняется в файле Perl.В чем может быть проблема?

Ответы [ 3 ]

2 голосов
/ 26 марта 2011

Вы действительно не даете нам многого, но приведенный ниже сценарий соответствует критериям в вопросе.Он выдает ответ 6. Команда в (1) имеет значение echo и печатает три значения.Команда в (2), очевидно, является строкой export.Команда в (3) является командой perl, которая добавляет значения в переменные окружения a, b и c, за которыми следует новая строка.

 set -- $(echo a=1 b=2 c=3)
 export $1 $2 $3
 perl -e 'print $ENV{a} + $ENV{b} + $ENV{c}, "\n"'

Существует множество возможных вариантов;Я бы не стал утверждать, что это хорошее решение вашей проблемы.Но это соответствует установленным критериям.Однако вам лучше показать свою собственную попытку решить проблему и обратиться за помощью в ее устранении.

Кроме того, как вы увидите, если запустить скрипт, export действительно работает.Если это не работает в вашем сценарии, это должно означать, что вы его неправильно использовали.Однако, поскольку вы не показали нам свой код, мы не можем помочь вам решить проблему в вашем коде.Это бедный мастер, который винит свои инструменты в своих собственных недостатках.И это признак тирона, заявляющего, что то, что миллионы людей успешно используют каждый день, «не работает».Существует небольшая вероятность того, что вы нашли способ его сломать, но этот шанс чрезвычайно мал, и его нужно было бы подробно проиллюстрировать.

0 голосов
/ 26 марта 2011

Попробуйте запустить сценарий с параметром оболочки '-x', чтобы увидеть, что происходит.

0 голосов
/ 26 марта 2011

Как указано в комментариях, это довольно сложно диагностировать с таким количеством информации, но вам не придется ничего экспортировать, если вы заставите скрипт perl читать значения из стандартного ввода, а не из среды.Тогда ваша "оболочка" будет просто

command_from_step_1 | perl_script_from_step_3

с символом канала между ними.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...