I have a bash script that takes a url with variables and writes it to a file, problem is the ampersand is interfering and being interpreted as a command / control character.
In this situation the string cannot be escaped BEFORE being passed to the script and I have yet to find any way to do this.
if [ $1 ] ; then
url=$1
printf %q "$url" > "/somepath/somefile"
fi
with $1 being for example localhost?x=1&y=2&z=3
What get’s printed is only the part before the first ampersand: “localhost?x=1”
I have also tried echo instead of printf but it’s exactly the same ??
Your script is fine, but you need to invoke the script with a quoted parameter: