如何使用“系统”执行“cat f1 f2>!f3”?

时间:2017-04-30 16:23:49

标签: perl shell

我没有运气地试过以下所有事情:

system "cat f1 f2 >! f3";
system 'cat f1 f2 >! f3';
system "cat f1 f2 \>\! f3";
`cat f1 f2 >! f3`;

我该怎么做?

2 个答案:

答案 0 :(得分:3)

这似乎是csh命令,因此您需要使用csh

system('/bin/csh', '-c', 'cat f1 f2 >! f3');

那就是说,csh是一个非常糟糕的外壳。您应该考虑切换到bourne shell(特别是脚本)。

system('/bin/sh', '-c', 'cat f1 f2 > f3');

以上内容可以缩短为:

system('cat f1 f2 > f3');

答案 1 :(得分:2)

>!重定向运算符不是标准运算符。它可能不存在于perl用于运行命令的/bin/sh中。 >|更为普遍。由于>!>|的目的是覆盖noclobber设置,因此您根本不需要使用它。您可能希望在交互式shell中使用noclobber,但在脚本中不应启用它,>应与>|的工作方式相同。

在任何情况下,使用system不是从perl执行基本文件操作任务的最有效方法。