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
合理的にエイリアス化される可能性があります。bash
sh
- 可能な限りポータブルである必要があります (Windows を除く)。
- の使用は認められませんが、どこ
perl
にでもある他の UNIX ツールの使用は認められる可能性があります。