バックリックを使ってPerlでLinuxコマンドを実行しようとしています。私はLinux上で直接実行するとき、それは動作しますが、Perlはバッククォートを通じてそれをしないとき、私はこのエラーを取得する:ターミナルで動作しても、バッククォートで構文エラーが発生するのはなぜですか?
sh: -c: line 0: syntax error near unexpected token `>'
sh: -c: line 0: `(/src/storageUtil --diagnostic 2> >(tee >(cat >&2) >&1)) > log.txt'
問題のコードの行は次のとおりです。
$output = `(/src/storageUtil --diagnostic 2> >(tee >(cat >&2) >&1)) > log.txt`;
何についてどのような洞察力このエラーが発生する可能性があります大いに感謝します。
おかげ
コマンドラインで 'bash'を使ってコードをテストしたことがありますが、Perlから呼び出す際に' sh'で実行しようとしています。 –
あなたは絶対的な天才です – user3307598
私はファイルのリダイレクトをお勧めします。通常は、パイプラインの実行ファイルを 'open'してから、シェルにアウトソーシングするのではなく、自分でファイルioを処理するほうがよいでしょう。 – Sobrique