【发布时间】:2015-10-28 02:01:12
【问题描述】:
我有一个 shell 脚本,它调用 perl 脚本来操作一些数据。一旦 Perl 脚本完成,它应该关闭并返回 shell (bash) 脚本的数据文件,然后在函数中使用该文件。关闭文件后如何结束我的 perl 脚本?
举个简单的例子:
#!/usr/bin/environment perl
my $filename = shift @ARGV;
open(my $fh, '+<', $filename) or die "Couldn't Open File";
sort $fh;
close $fh;
编辑:所以,这里可能出了点问题。要排序的文件每行包含一个单词。如果这个脚本正常工作,我如何在 bash shell 中使用它的输出?我期望: perl sort.pl "$filename" > sorted.txt 将 sorted.txt 保存在磁盘上。
【问题讨论】:
-
我认为你不需要在这里做任何特别的事情。 perl 脚本正在关闭文件。一旦返回,shell 脚本就可以使用该文件。
-
您发布了一个 perl 脚本/程序(第一行 #!/usr/bin/environment perl)。也愿意分享 bash 脚本吗?。
-
您需要从文件句柄中读取数据,对其进行排序,将其写入某个位置,然后将其关闭。但是为什么不使用
sort命令呢。让程序写入标准输出可能是最灵活的。 -
您可以在 shell 脚本中使用 Unix/Linux 排序命令对文件进行排序。 Perl 的排序功能适用于数组/列表,而不适用于文件句柄。
-
啊,好吧,菜鸟的错误。我看到以下内容,希望做类似的事情。 'perl -we '打印排序 ' input.txt > output.txt'