文字列内の特殊文字を自動的にエスケープしたい。その文字列をエコーして、いくつかのsedにパイプすることを考えました。これは、バックティック内では機能しないようです。では、なぜ
echo "foo[bar]" | sed 's/\[/\\[/g'
戻る
foo\[bar]
しかし
FOO=`echo "foo[bar]" | sed 's/\[/\\[/g'` && echo $FOO
ただ戻る
foo[bar]
?
sed とは対照的に、tr はバッククォート内で完全に機能します。
FOO=`echo "foo[bar]" | tr '[' '-' ` && echo $FOO
戻り値
foo-bar]