Perl:导入shell变量

Perl:导入shell变量,perl,shell,environment-variables,csh,Perl,Shell,Environment Variables,Csh,在shell中,我获得了.cshrc文件,该文件包含一些已定义的变量,如用户名 我需要将这些变量传递给某个Perl脚本 例如在shell终端中,我键入了 >echo$user 输出为esaad> 然后在Perl中,为了读取$user变量,我尝试: system(“echo$user”) 还尝试了以下命令: my$userName=system(echo$ENV{user}) 但是Perl要求将$user初始化为Perl变量,而不是Shell变量 我如何读取这个变量 您可以: print $ENV

在shell中,我获得了
.cshrc
文件,该文件包含一些已定义的变量,如用户名

我需要将这些变量传递给某个Perl脚本

例如在shell终端中,我键入了

>echo$user

输出为esaad>

然后在Perl中,为了读取
$user
变量,我尝试:

system(“echo$user”)

还尝试了以下命令:

my$userName=system(
echo$ENV{user}

但是Perl要求将
$user
初始化为Perl变量,而不是Shell变量

我如何读取这个变量

您可以:

print $ENV{'user'}
您的系统调用不起作用的原因是系统打开了一个新的shell,而该shell没有源代码.cshrc 阅读答案了解更多信息

您可以:

print $ENV{'user'}
您的系统调用不起作用的原因是系统打开了一个新的shell,而该shell没有源代码.cshrc
阅读答案了解更多信息

使用Perl内置系统变量$ENV:

print $ENV{'user'}
或者使用反斜杠转义变量$user。Perl将解释Perl程序中定义的$user变量,而不使用反斜杠。使用反斜杠,“echo$user”作为系统调用传递

system("echo \$user")

使用Perl内置系统变量$ENV:

print $ENV{'user'}
或者使用反斜杠转义变量$user。Perl将解释Perl程序中定义的$user变量,而不使用反斜杠。使用反斜杠,“echo$user”作为系统调用传递

system("echo \$user")

或者,使用单引号:
system('echo$user')
或者使用单引号:
system('echo$user')
是环境变量还是外壳变量?如果它们是shell变量,您将无法从Perl访问它们。这些变量是环境变量还是shell变量?如果它们是shell变量,您将无法从Perl访问它们。