xシェルのメタ文字を含む文字列を含むシェル変数 ( と呼びます) があります。たとえば、私は持っているかもしれません
abc  "def's"  ghi
によって設定されたとおり
x='abc  "def'\''s"  ghi'
その文字列からシェルコマンドを作成したい(実行ではなくファイルに保存する)。私のオプションは何ですか?
echo "prog $x"     >>file     # Doesn't work
echo "prog '$x'"   >>file     # Doesn't work
echo "prog \"$x\"" >>file     # Doesn't work
現在のソリューションはsed
y=`echo "$x" | sed 's/\([^a-zA-Z0-9._\-\/]\)/\\\\\1/g'`
echo "prog $y" >>file
出力は次のとおりです (ただし、同等の出力も許容されます)。
prog abc\ \ \"def\'s\"\ \ ghi
問題は、これを行う必要がある場所の数が増えていることです。誰かがより良い解決策を持っていますか?
ノート:
sh( とは対照的にbash) で動作する必要があり、 (エミュレーション モードなどで)sh合理的にエイリアス化される可能性があります。bashsh- 可能な限りポータブルである必要があります (Windows を除く)。
 - の使用は認められませんが、どこ
perlにでもある他の UNIX ツールの使用は認められる可能性があります。