0

我在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

我什至尝试转义>and &。但是错误消息没有变化。我可以知道这是什么原因吗?我在哪里错了?

4

3 回答 3

1

我很确定您不能&在此使用尾随。如果您希望程序在命令运行时继续,然后fork让子进程运行调用,然后退出。可能exec可以做到这一点,虽然我之前没有尝试过使用输出重定向来做到这一点......

于 2012-10-31T09:03:33.123 回答
0

就像消息说的那样,这不是一个有效的sh命令。也许是csh命令?

system('csh', '-c', $cmd);
于 2012-10-31T09:21:35.863 回答
-1

尝试这个:

perl -e "`cat myfile.txt>&mytemp.txt&`;"

它正在执行命令并返回命令输出。所以可以这样做:

#!/usr/bin/perl
my $content = `cat /etc/passwd`;
print $content;

如果将代码放入 perl 脚本中:

猫测试.pl

#!/usr/bin/perl

use strict;
use warnings;

my $res = `cat myfile.txt>&mytemp.txt&`;
于 2012-10-31T09:44:03.777 回答