2017-09-26 123 views
0

我想将一个变量传递给自定义Perl脚本。从shell中使用Perl自定义脚本

 $file="my_wa/fin" 
     if [[ "$file" == *"fin" ]]; then 
      script.pl 
     fi 

在我的剧本我尝试使用$file我的路径打开和读取文件

my $input_filename = "$ENV{file}"; 

我明白,我需要以某种方式将其导出,并接受它在我的Perl代码, 但它不承认$file。 - 如果我只写my_wa/fin,它会很好地工作。

+0

尝试阅读alvinalexander.com/perl/perl-command-line-arguments-read-arg s – ilux

+0

@ilux,404找不到 –

+0

哦,https://alvinalexander.com/perl/perl-command-line -arguments-读ARGS – ilux

回答

0

你可以通过$文件作为参数

$file="my_wa/fin" 
    if [[ "$file" == *"fin" ]]; then 
     script.pl \"$file\" 
    fi 

然后访问数据

my $input_filename = $ARGV[0]; 
1

在调用perl程序之前,您没有在shell中导出变量。

将你的shell代码粘贴到http://www.shellcheck.net/ - 它会告诉你你的其他shell错误。

0

是的,您需要在执行perl脚本之前在shell中导出环境变量文件。你也可以确保包含文件的完整路径。

export file=/full/path/to/my/file/my_wa/fin

或利用的pwd如果它是相对于当前的工作目录:

export file="$(pwd)/my_wa/fin"