変数を含むURLを取得してファイルに書き込むbashスクリプトがあります。問題は、アンパサンドが干渉し、コマンド/制御文字として解釈されていることです。
この状況では、スクリプトに渡される前に文字列をエスケープすることはできず、これを行う方法をまだ見つけていません。
if [ $1 ] ; then
url=$1
printf %q "$url" > "/somepath/somefile"
fi
$ 1は、たとえばlocalhost?x = 1&y = 2&z=3です。
印刷されるのは、最初のアンパサンドの前の部分のみです: "localhost?x = 1"
printfの代わりにechoも試しましたが、まったく同じですか??