如何在bash shell脚本中使用perl命令呼叫中的shell变量



如何在bash shell脚本中使用perl命令呼叫中的shell变量?

我在我的shell脚本中有一个perl命令来评估日期-1。

如何在perl命令调用中使用 $myDate

这是我脚本中的部分:

myDate='10/10/2012'
Dt=$(perl -e 'use POSIX;print strftime '%m/%d/%y', localtime time-86400;")

我想用$myDate代替%m/%d/%y

任何帮助将不胜感激。

谢谢。

shell的变量可在Perl的%ENV哈希中使用。使用bash(和其他一些外壳),您需要采取"导出"外壳变量的额外步骤,因此子流程可见。

mydate=10/10/2012
export mydate
perl -e 'print "my date is $ENV{mydate}n"'

使用"而不是'也将Shell变量传递到版本5.24中的Perl。

mydate=22/6/2016
perl -e "print $mydate"

将值传递给任何其他程序的方式相同:将其传递为arg。(您可能很想生成Perl代码,但这是一个坏主意。)

Dt=$( perl -MPOSIX -e'print strftime $ARGV[0], localtime time-86400;' -- "$myDate" )

请注意,代码并不总是返回昨天的日期(因为并非所有天数都有86400秒)。为此,您想要

Dt=$( perl -MPOSIX -e'my @d = localtime time-86400; --$d[4]; print strftime $ARGV[0], @d;' -- "$myDate" )

Dt=$( perl -MDateTime -e'print DateTime->today(time_zone => "local")->subtract(days => 1)->strftime($ARGV[0]);' -- "$myDate" )

或简单

Dt=$( date --date='1 day ago' +"$myDate" )

对我来说,我需要使用$ENV{'VARIABLE'}VARIABLE传递到Shell中。我不知道为什么简单的$ENV{VARIABLE}不起作用。

例如,

bash:

#!/bin/bash -l
VARIABLE=1
export VARIABLE
perl example.pl

在perl中:

#!/usr/bin/perl -w
print "my number is " . $ENV{'VARIABLE'}

为什么不这样的东西: $ENV{'PATH'} = $ENV{'PATH'}.":"."/additional/path";

相关内容

  • 没有找到相关文章

最新更新