次を実行すると:
system("screen -dmS $screenname");
それは正常に動作しますが、perl から画面を実行し、追加の引数を指定してコマンド (この場合は tcpreplay) を実行しようとすると、想定どおりに実行されません。
system("screen -dmS $screenname -X stuff \"`printf \"tcpreplay --intf1=eth0 s.cap\\r\"`\" ");
ここで何が間違っていますか?
次を実行すると:
system("screen -dmS $screenname");
それは正常に動作しますが、perl から画面を実行し、追加の引数を指定してコマンド (この場合は tcpreplay) を実行しようとすると、想定どおりに実行されません。
system("screen -dmS $screenname -X stuff \"`printf \"tcpreplay --intf1=eth0 s.cap\\r\"`\" ");
ここで何が間違っていますか?
single\"
をに置き換えてみてください\\\"
。これでうまくいくはずです。
ここで同じ問題を考えてみましょう:
system ("echo Quotation marks: \\\"here\\\" but \"not here\". ");
前のコード行からの出力は次のとおりです。引用符: "here" but not here.
Simo A の回答を出発点として、私は.q( )
ではなく. を使用します" "
。
system ( q(echo Quotation marks: \"here\" but "not here". ));
つまり、引用符を 2 回エスケープする必要はありません。