2012-03-26 14 views
-2

私はperl -pi -eを使ってxmlファイルの行を編集しようとしています。コマンドラインからperl -pi -eコマンドを実行するとうまくいきますが、スクリプトを入力してシス​​テムコマンドを使用すると、以下のエラーが表示されます。Perlスクリプト内のXML編集

su:無効なオプション - i

詳細については `su --help 'を試してください。

print "Please enter virtualhost 1 - Example - ucisha.com:"; 
    my $virtualhost1 = <>; 
    system("ssh -t <HOST> \"sudo su - root -c perl -pi -e 's/xmlNamespaceAware=\"false\">/xmlNamespaceAware=\"false\"> <Alias>$virtualhost1<\/Alias>/g' /tcserver/springsource-tc-server-node/UCISjvm/conf/krh.xml\""); 
+6

あなたはsudoを使って権限を昇格させ、正規表現を使ってXMLファイルを編集するperl one-linerを渡すリモートシステムにperlからsshへシェルを張っていますか?ああ、私。私は真剣に30分の恐怖に襲われた後、コマンドライン引数として編集要件をとり、適切なXMLパーサを使ってそれらを作るPerlスクリプトをそのサーバにインストールすることを真剣に考えていました。 – Quentin

答えて

3

-cに渡す引数の前後に引用符を追加する必要があります。

現時点では-c perlがあり、次に-pisuではなくperlの別の引数として扱われます。

+0

新しいエラーを修正しようとします。経験則として、まず最初にプログラムの最もネストされた部分を作り直してください。一度に一レベルの入れ子に戻って、あなたが行くようにエスケープする権利を得てください。 – Quentin

+0

私はここにコードを取得するいくつかの問題があります。しかし、今私は以下のエラーが表示されています: 印刷 "入力してください、仮想ホスト1 - 例 - ucisha.com:"; my $ virtualhost1 = <>; $ virtualhost1 <\/Alias>/g 'を使用すると、システムが正しく動作していることを確認できます(「ssh -t 」「sudo su-root -c」perl -pi -e' s/xmlNamespaceAware = \ "false \">/xmlNamespaceAware = /tcserver/springsource-tc-server-node/UCISjvm/conf/krh.xml '\ ""); ash:-c:予期しないトークンの近くの構文エラー '<' bash:-c:行0:' sudo su-root -c' perl -pi -e '/ xmlNamespaceAware = false>/xmlNamespaceAware = false> akdljad ' – Badboy

+0

''で区切られた文字列でエスケープされていない' 'の文字を使用しています。 – Quentin

関連する問題