ruby の gsub コマンドで変更"/foo/bar/dir"
してみます。"\/foo\/bar\/dir"
私はirbでそれをテストし、結果は
x = "/foo/bar/dir"
x.gsub("/","\/")
=> "/foo/bar/dir"
x.gsub("/","\\/")
=> "\\/foo\\/bar\\/dir"
gsub で「/」を「/」に置き換えることはできますか?
問題の原因:
「コマンドラインで文字列」を実行しようとしましたが、「real_path」が変数です
real_path = "/home/me/www/idata"
path = real_path.gsub("/","\\/")
=> \\/home\\/me\\/www\\/idata
# But what I expect is \/home\/me\/www\/idata
run "sed 's/SHARE_PATH/#{path}/g' #{path}/config/sphinx.yml > #{path}/config/sphinx.tmp.yml"
「実行」コマンドの結果は
"sh -c 'sed '\''s/SHARE_PATH/\\/home\\/me\\/www\\/idata\\/shared/g .... "
必要なのは、次のようなバックスラッシュ 1 つだけです
"sh -c 'sed '\''s/SHARE_PATH/\/home\/me\/www\/idata\/shared/g .... "
「実行」はカピストラーノからのコマンドです
私の解決策は
このように二重引用符の代わりに単一引用符を使用してください
path = real_path.gsub("/",'\/')