Hi guys,
I had to write a Windows bat file for twentysomething users and - as
Linux geek - wrote a small Bash script for it. The code in question is
as follows:

echo -e "net use z: \\\\srv\\aqs /persistent:no /user:%USERNAME%
$BG_PASSWD\r"

I expected the created files being as such:
net use z: \\srv\aqs /persistent:no /user:%USERNAME% user-password

but got:
net use z: \srvqs /persistent:no /user:%USERNAME% user-password

Without the parameter e the code for a working file had to be:
echo "net use z: \\srv\aqs /persistent:no /user:%USERNAME% $BG_PASSWD"
but missed the Windows-newline carriage return (\r) - adding that
without changing the echo command didn't print out the carriage return
character but the literal backslash-R, as the default behaviour
(parameter E) indicates.

Long story short: Escaping doesn't work correctly, either it's the Bash
interfering (but only escaping the double backslashes, and afterwards
echo -e escaping everything correctly), or the double backslash escape
doesn't work at all. It CAN be healed by using single quotes, but then
variable expansion doesn't work, or by using a variable workaround:

BG_SHARE='\\\\srv\\aqs'
echo -e "net use z: $BG_SHARE /persistent:no /user:%USERNAME% $BG_PASSWD
\r"

but I'm pretty positive this is a workaround, not the way it should
work. 

Maybe you dig into it, if you have the time. Since I found nothing
worthy googleing the issue, it seems like a quite uncommon situation I'm
in.

BR
Jo

P.S.: It's a standard Debian Wheezy without clickery GUI. No funny
changes to the default behaviour of Bash or the login shell.

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to