2017-09-26 125 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"