如何从bash中获取Perl中的SECODS变量?[关闭]

atmip9wb  于 2023-06-23  发布在  Perl
关注(0)|答案(1)|浏览(182)

2天前关闭。
Improve this question
在bash中运行命令时,如何在Perl中显示SECONDS等基本变量?

perl -e 'system(bash -c echo $SECONDS)'

它什么都不显示。我没有访问bash变量的权限,但我正在bash中运行一个Perl命令。

oogrdqng

oogrdqng1#

需要导出一个bash变量,以便在同一个bash进程中执行的Perl程序可以看到它。然后可以在Perl中将其作为环境变量使用,或者在子shell中使用

echo $SECONDS                                    # 14  (newly opened terminal)
export SECONDS

perl -wE'say $ENV{SECONDS}'                      # 23

perl -wE'system "bash", "-c", "echo \$SECONDS"'  # 23

请注意,$字符需要转义,否则Perl程序将把$SECONDS视为自己的变量。并将尝试在它将参数传递给system之前对它启动的shell进行评估(无效)。
有人提出了如何只将其传递给这一个程序的问题。然后将该值作为命令行参数传递给Perl程序?查看如何将shell变量传递给Perl单行程序,例如here
Cyrus在注解中提供的另一种方法是,使该值仅对被调用的程序可用。

SECONDS=$SECONDS perl -wE'...'

此外,现在一旦引入了一个新变量,就可以为Perl程序更合适地命名它,因为它不再像bash的SECONDS那样工作。

相关问题