Как я могу получить доступ к переменной оболочки из скрипта Perl? - PullRequest
1 голос
/ 14 января 2020

В терминале я могу получить доступ к переменной $LINES:

$ echo $LINES
39

Запуск сценария Perl примерно так:

 #!/usr/bin/env perl

 use strict; use warnings;

 my $cmd = q|echo $LINES|;
 my $lines = `$cmd`;

 print "lines: $lines\n";

дает вывод: lines:. Я также пытался получить доступ к %ENV, но он не содержит этот конкретный ключ.

Как получить доступ к переменной оболочки $LINES из сценария Perl?

1 Ответ

4 голосов
/ 14 января 2020

С bash manual :

Когда вызывается программа, ей присваивается массив строк, называемый окружением. [...] Оболочка предоставляет несколько способов манипулирования средой. При вызове оболочка сканирует свою собственную среду и создает параметр для каждого найденного имени, автоматически помечая его для экспорта в дочерние процессы. Выполненные команды наследуют среду. Команды export и declare -x позволяют добавлять и удалять параметры и функции из среды.

Итак (при условии Bash shell) с помощью:

export LINES

сделает переменную $LINES доступной из начального сценария Perl из командной консоли (используя $ENV{LINES} из сценария Perl).

...