Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何编写以数据文件名为参数的shell脚本来运行perl脚本?_Bash_Shell_Perl - Fatal编程技术网

Bash 如何编写以数据文件名为参数的shell脚本来运行perl脚本?

Bash 如何编写以数据文件名为参数的shell脚本来运行perl脚本?,bash,shell,perl,Bash,Shell,Perl,我正在学习Perl和Shell脚本,我面临的挑战之一是编写一个以csv文件为参数的Shell脚本,然后让该Shell脚本运行我的Perl脚本(test.pl)。我似乎无法获得正确的语法下来,我已经终止了每次,因为它挂断了我的终端 例如,shell脚本是test.sh #/bin/bash ./test.pl $i` 在我的终端上,我打字 test.sh testfile.csv 最终,我希望我的perl脚本能够读取测试文件,以便它能够运行。我认为您的错误来自$I`部分 首先,后面的反引号可

我正在学习Perl和Shell脚本,我面临的挑战之一是编写一个以csv文件为参数的Shell脚本,然后让该Shell脚本运行我的Perl脚本(test.pl)。我似乎无法获得正确的语法下来,我已经终止了每次,因为它挂断了我的终端

例如,shell脚本是test.sh

#/bin/bash
./test.pl $i` 
在我的终端上,我打字

test.sh testfile.csv

最终,我希望我的perl脚本能够读取测试文件,以便它能够运行。

我认为您的错误来自
$I`
部分

首先,后面的反引号可能是一个输入错误,应该引起语法错误。其次,
i
变量未定义,因此
$i
解析为空字符串。由于它没有被引用,shell将省略它并调用
test.pl
,而不带任何参数。。。因此,您的终端可能挂起,因为您的perl脚本正在等待输入

正如@fra所建议的,您应该使用
$1
而不是
$i
,从而将传递给bash脚本的第一个参数传递给perl脚本


根据您的perl脚本(shebang,execution write),您可以手动调用也可以不手动调用perl可执行文件。

您是否尝试过使用
perl test.pl$1
?@fra谢谢!把$i换成$1有帮助!你和@fra是对的。后面的反引号是一个我没有意识到的输入错误,将位置参数从--$I改为--%1有助于我的脚本运行。