栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Perl脚本中使用Bash环境变量?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Perl脚本中使用Bash环境变量?

这里有两个查询,关于使用Bash变量和运行外部命令。

Perl中有

%ENV
哈希,带有环境变量

perl -wE'say $ENV{PWD}'

但是,通常最好在脚本中使用等效项,因为脚本的含义可能会有所不同,或者在脚本运行时会有所变化。

更重要的是,使用shell命令会使您面临引号,shell注入和解释的各种潜在问题。例如,您显示的命令很危险,如CharlesDuffy注释中所述。原则上,最好使用Perl的丰富功能。
清醒而详尽的优势说明。


如果确实需要运行外部命令,则最好完全避免使用shell,例如,使用system的多参数形式。如果您还需要命令的输出,Perl中的各种模块都可以提供该命令。请参阅下面的链接。

如果您还需要使用外壳程序的功能,则可以使用String ::ShellQuote之类的现成工具,而不是为了正确地引用所有内容以便外壳程序接收所需的内容。

请注意,qx运算符(反引号)使用

/bin/sh
,这可能降级也可能不会降级为Bash。因此,如果您想要Bash,则需要
system('/bin/bash','-c',@cmd)
。请参阅带有示例的链接。


这是一个与问题背后的目标有关的完整例子。

程序的工作目录可能与预期不同,具体取决于启动方式。首先,它在之后发生变化

chdir
。我不知道您的确切意图
PWD
,但是在Perl中,核心Cwd::
cwd
和FindBin具有
$RealBin
,用于当前工作目录和脚本所在的目录(通常是不同的东西)。

要创建到的符号链接

$path
,其相对路径应位于当前工作目录之后

use warnings;use strict;use Cwd qw(cwd);my $cwd = cwd;my $path = '/first/path';symlink($path, "$cwd/second/path") or die "Can't make a symlink: $!";

如果该路径是脚本的位置,请使用

$RealBin
from
FindBin
代替
cwd

请注意,使用symlink不能传递目录而不是链接名称。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/388040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号