How come sh UsersInput.sh
gives a different output compared to bash UsersInput.sh
?
My script is below:
#!/bin/bash
echo -n "Enter: ";
read usersinput;
echo "You entered, \"$usersinput\"";
bash
localhost:Bash henry$ bash UsersInput.sh
Enter: input
You entered, "input"
sh
localhost:Bash henry$ sh UsersInput.sh
-n Enter:
input
You entered, "input"
How come -n
behaves properly with the first, but not with the second? What's the reason for this and is there a workaround?
From
man echo
:In bash, the Bourne-again shell,
echo
accepts the-n
option whereas in sh, the Bourne shell,echo
does not, so it simply echos everything you wrote, including the -n./bin/sh is a version of bash (not a Bourne shell) on OS X. It has POSIX mode enabled and has a few other changes as well. One of them is that the xpg_echo shell option is enabled by default so that the builtin echo conforms to POSIX.
http://pubs.opengroup.org/onlinepubs/009696799/utilities/echo.html:
http://www.gnu.org/software/bash/manual/bash.html#Bash-POSIX-Mode:
You can unset xpg_echo, use /bin/echo, or preferably just use printf: