0

私はUnixのような簡単なコマンドを持っています

cat myfile.txt >&mytemp.txt&

上記のコマンドは、ファイル myfile.txt のコピーを作成するだけです。コマンド ラインでコマンドを実行すると、次のようなプロセス ID が返されます。

> cat myfile.txt > & mytemp.txt &
[1] 769
>

perl スクリプト内で同じコマンドを作成し、以下のように system で呼び出しています。

my $cmd="cat myfile.txt>&mytemp.txt&";
my $info = system("$cmd");

しかし、system コマンドは次のエラー メッセージで失敗します。

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 スクリプトに入れる場合:

cat-test.pl

#!/usr/bin/perl

use strict;
use warnings;

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