如何将参数从 perl 脚本传递到 bash 脚本
我试图在 perl 中使用 grep,但我必须从 perl 接收参数才能将它们与 grep 选项一起使用,我这样做
#!/usr/bin/perl
system(grep -c $ARGV[0] $ARGV[1]);
会引发错误,这如何实现?
im trying to use grep in perl, but i have to recive arguments from perl to use them with grep options, im doing this
#!/usr/bin/perl
system(grep -c $ARGV[0] $ARGV[1]);
this throws an error, how can this be implemented?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
但请考虑这是否是您想要做的。 Perl 可以自己做很多事情,而不需要调用外部程序。
But consider whether that's what you want to do. Perl can do a lot of things itself without invoking external programs.
system()
的参数必须是一个字符串 (或字符串列表)。尝试:The argument to
system()
has to be a string (or list of strings). Try:您可能无法从该代码中得到您所期望的结果。来自
perldoc -f system
:system
实际上不会为您提供来自grep
的计数,而只是来自grep进程的返回值。为了能够在 perl 中使用该值,请使用
qx()
或反引号。例如,请注意,这将在数字后给您一个换行符,例如“6\n”。
但是,为什么不全部使用perl呢?
不过,由菱形运算符
<>
执行的隐式open
如果落入坏人之手,可能会很危险。您可以使用三参数打开方式手动打开文件:You may not get what you expect from that code. From
perldoc -f system
:system
will not actually give you the count fromgrep
, just the return value from the grep process.To be able to use the value inside perl, use
qx()
or backticks. E.g.Be aware that this will give you a newline after the number, e.g. "6\n".
However, why not use all perl?
The implicit
open
performed by the diamond operator<>
can be dangerous in the wrong hands, though. You can instead open the file manually with a three-argument open: