SC2162
hrvoj3e edited this page Dec 1, 2018
·
8 revisions
read without -r will mangle backslashes
Problematic code:
echo "Enter name:"
read nameCorrect code:
echo "Enter name:"
read -r nameRationale:
By default, read will interpret backslashes before spaces and line feeds, and otherwise strip them. This is rarely expected or desired.
Normally you just want to read data, which is what read -r does. You should always use -r unless you have a good reason not to.
Note that read -r will still strip leading and trailing spaces. IFS="" read -r prevents this.
Exceptions:
If you want backslashes to affect field splitting and line terminators instead of being read, you can disable this message with a directive.