我在unix中有简单的命令,如
cat myfile.txt >&mytemp.txt&
上面的命令只会创建文件myfile.txt的副本。 当我在命令行上执行命令时,它返回如下所示的进程ID:
> cat myfile.txt > & mytemp.txt &
[1] 769
>
我在perl脚本中形成相同的命令,并使用系统调用它,如下所示:
my $cmd="cat myfile.txt>&mytemp.txt&";
my $info = system("$cmd");
但sytem命令失败,并显示以下错误消息:
sh: mytemp.txt: bad number
我甚至试图转义>
和&
。但错误消息没有变化。
我可以知道这个的原因吗?我在哪里错了?
答案 0 :(得分:1)
我很确定你不能在此使用尾随&
。如果希望程序在命令运行时继续运行,则fork
让子进程运行该调用,然后退出。可能exec
可以做到这一点,虽然我还没有尝试过使用输出重定向...
答案 1 :(得分:0)
就像消息所说的那样,这不是一个有效的sh
命令。它可能是csh
命令吗?
system('csh', '-c', $cmd);
答案 2 :(得分:-1)
试试这个:
perl -e "`cat myfile.txt>&mytemp.txt&`;"
正在执行命令并返回命令输出。 所以可以这样做:
#!/usr/bin/perl
my $content = `cat /etc/passwd`;
print $content;
如果您将代码放入perl脚本:
<强> cat-test.pl 强>
#!/usr/bin/perl
use strict;
use warnings;
my $res = `cat myfile.txt>&mytemp.txt&`;