2017-01-16 3 views
-3

私は十二分に見て答えをたくさん見つけ、多くの試行錯誤の末、私はこの結論に至りました。わかりません。コマンドの出力を隠す方法はsytem()内で実行されましたか?

私はPerlでのことを実行しています:

my $command = sprintf('commandHereDoingSCPishThingsThatHasToRunInMyShell', options, options, options); 
system($command); 

私はターミナルウィンドウに私のスクリプトを実行すると、私はsprintfの()関数内でコマンドの出力を参照してください。

出力がファイルにリダイレクトされ、ターミナルウィンドウで実行されているプログラムを参照する必要はありません。

ありがとうございます!

+4

'コマンド> file'に何か問題:

use IPC::System::Simple 'capture'; my $output = capture($command); # dies if command fails; catch this with eval if necessary File::Slurp::write_file('somefile', $output); 

また、ちょうどあなたのコマンドでファイルに出力をリダイレクト? – Havenard

+3

_ sprintf()関数内のコマンドの出力を参照してください。_不可能です。 – 7stud

+0

sprintf機能はそれを好きではないようです...そして何らかの理由で、それはまだ印刷されます。 – Oly396

答えて

2

エラーを検出して関連するエラーメッセージを表示するのは簡単ではないため、perlのシステム()の生の使用はお勧めしません。 IPC::System::Simpleの使用を検討してください。出力をキャプチャしたいので、その出力を使用してください。

use IPC::System::Simple 'system'; 
system("$command >somefile"); 
+0

それは素晴らしいです!私は小さな問題を抱えていますが、私はIPC :: System :: Simpleへのアクセス権を持っていません。これはリモートマシンであり、私はそのボックスの管理者ではないからです。 :/ – Oly396

+2

'my $ cmd_stdout_output = \' $ cmd \ '' – 7stud

関連する問題