nodejsでは、外部コマンドを実行する唯一の方法はsys.exec(cmd)です。私は外部コマンドを呼び出し、stdin経由でデータを与えたいと思います。 nodejsでは、まだコマンドを開いてデータをpushする方法はないようです(標準とエラーの出力をexecして受け取るだけです)ので、私はこれを行うしかありません。ノードでシェルコマンドの文字列をエスケープするにはどうすればよいですか?
このような質問にほとんど答えはnodejsに私のために動作しません正規表現(GoogleのV8 JavaScriptエンジンを使用している)などの他の言語からのネイティブ機能のいずれかに焦点を当てているvar dangerStr = "bad stuff here";
sys.exec("echo '" + dangerStr + "' | somecommand");
次のような単一の文字列コマンドを経由してPython。
私は上記のようなexec文字列を作成するのが安全なようにdangerStrから脱出したいと思います。役立つ場合、dangerStrにはJSONデータが格納されます。
文字列を安全にエスケープするために、以下のアルゴリズムを使用できます:1)すべての一重引用符( ')を、 )2)変更された文字列の最初と最後に一重引用符を追加します。先頭と末尾の一重引用符は完全に効率的にエンコードされませんが、それはまだ機能します。 –
明確化のために:@ ChrisJohnsenのアドバイスを理解するのに少し時間がかかりましたが、それはチェックアウトしています。シェルで 'do not do 'をしたいなら、' echo'は 'do not 'は' do not that'を生成するために 'do 'を行います。 – mikemaccana