mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC2162 (markdown)
23
SC2162.md
Normal file
23
SC2162.md
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
## read without -r mangles backslashes
|
||||||
|
|
||||||
|
### Problematic code:
|
||||||
|
|
||||||
|
echo "Enter name:"
|
||||||
|
read name
|
||||||
|
|
||||||
|
### Correct code:
|
||||||
|
|
||||||
|
echo "Enter name:"
|
||||||
|
read -r name
|
||||||
|
|
||||||
|
### Rationale:
|
||||||
|
|
||||||
|
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. All `read`s should 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]].
|
Reference in New Issue
Block a user