文字列をエスケープされたものに変換するbashコマンドが必要です。以下に例を示します。
echo "hello\world" | escape | someprog
エスケープコマンドが"hello\world"
を"hello\\\world"
にする場所。その後、someprogは"hello\\world"
を期待どおりに使用できます。もちろん、これは私が本当にやろうとしていることの簡単な例です。
Bashの場合:
printf "%q" "hello\world" | someprog
例えば:
printf "%q" "hello\world"
hello\\world
これは変数でも使用できます。
printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
Pure Bash、パラメーター置換を使用:
string="Hello\ world"
echo ${string//\\/\\\\} | someprog
Perlを使用して、次のようなさまざまな文字を置き換えることができます。
$ echo "Hello\ world" | Perl -pe 's/\\/\\\\/g'
Hello\\ world
エスケープの性質に応じて、適切な文字をエスケープするために複数の呼び出しを連鎖できます。