Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在perl代码中运行ksh脚本不起作用_Perl_Bash_Shell_Unix_Ksh - Fatal编程技术网

在perl代码中运行ksh脚本不起作用

在perl代码中运行ksh脚本不起作用,perl,bash,shell,unix,ksh,Perl,Bash,Shell,Unix,Ksh,我在/opt/apps/abc/folder/properties.env这样的位置有一个KornShell脚本。我可以使用dot命令从Unix bash执行它: . /opt/apps/abc/folder/properties.env 这很有效 我有一个Perl脚本abc.pl,从中调用脚本properties.env。我尝试了以下不同的方法: system('/usr/bin/ksh','-c','./opt/apps/abc/folder/properties.env') /usr/b

我在
/opt/apps/abc/folder/properties.env
这样的位置有一个KornShell脚本。我可以使用dot命令从Unix bash执行它:

. /opt/apps/abc/folder/properties.env
这很有效

我有一个Perl脚本
abc.pl
,从中调用脚本
properties.env
。我尝试了以下不同的方法:

  • system('/usr/bin/ksh','-c','./opt/apps/abc/folder/properties.env')

  • /usr/bin/ksh-c/opt/apps/abc/folder/properties.env

  • system('./opt/apps/abc/folder/properties.env')


  • 以上都不起作用。我不想使用
    exec
    ,因为我想返回到Perl脚本。我做错了什么?

    环境更改只会持续
    系统
    命令生成的ksh会话的生命周期。如果希望环境更改影响Perl脚本,则必须在启动Perl程序之前获取该文件的源代码。

    环境更改的持续时间仅与
    系统
    命令生成的ksh会话的持续时间相同。如果希望环境更改影响Perl脚本,则必须在启动Perl程序之前获取该文件的源代码。

    如果在Perl代码中需要这些环境变量(而不是在调用Perl的环境中),还可以读取和解析properties.env并在%env变量中设置环境

    e、 g


    正如另一张海报所说,使用system()生成另一个进程。更改子级中的环境不会影响父级。

    如果在perl代码中需要这些环境变量(不是在调用perl的环境中),还可以读取和解析properties.env,并在%env变量中设置环境

    e、 g


    正如另一张海报所说,使用system()生成另一个进程。改变孩子的环境不会影响父母。

    1)你希望得到什么结果?2) 你得到的结果是什么呢?
    system('/usr/bin/ksh','-c','/opt/apps/abc/folder/properties.env')?我也试过了。不起作用。ksh脚本中有一些用于设置环境属性的命令。我希望它能够成功运行,不可能从一个子进程设置环境变量(而且您只能从perl作为一个子进程启动ksh脚本)。从脚本中手动提取设置并在perl脚本中设置它们的唯一方法。对不起英语。1)你期望得到什么结果?2) 你得到的结果是什么呢?
    system('/usr/bin/ksh','-c','/opt/apps/abc/folder/properties.env')?我也试过了。不起作用。ksh脚本中有一些用于设置环境属性的命令。我希望它能够成功运行,不可能从一个子进程设置环境变量(而且您只能从perl作为一个子进程启动ksh脚本)。从脚本中手动提取设置并在perl脚本中设置它们的唯一方法。对不起英语。
    
    $ENV{'ENV_VAR1'}=VALUE_OF_ENV_VAR1