mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC1012 (markdown)
44
SC1012.md
Normal file
44
SC1012.md
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
## `\t` is just literal `t` here. For tab, use `"$(printf '\t')"` instead.
|
||||||
|
|
||||||
|
### Problematic code:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Want tab
|
||||||
|
var=foo\tbar
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Want linefeed
|
||||||
|
var=foo\nbar
|
||||||
|
```
|
||||||
|
|
||||||
|
### Correct code:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
var="foo$(printf '\t')bar" # As suggested in warning
|
||||||
|
var="$(printf 'foo\tbar')" # Equivalent alternative
|
||||||
|
```
|
||||||
|
|
||||||
|
or
|
||||||
|
```sh
|
||||||
|
# Literal, quoted linefeed
|
||||||
|
line="foo
|
||||||
|
bar"
|
||||||
|
```
|
||||||
|
### Rationale:
|
||||||
|
|
||||||
|
ShellCheck has found a `\t`, `\n` or `\r` in a context where they just become regular letter `t`, `n` or `r`. Most likely, it was intended as a tab, linefeed or carriage return.
|
||||||
|
|
||||||
|
To generate such characters (plus other less common ones including `\a`, `\f` and octal escapes) , use `printf` as in the example. The exception is for linefeeds that would be stripped by command substitution; in these cases, use a literal quoted linefeed instead.
|
||||||
|
|
||||||
|
Other characters like `\z` generate a [[SC1001]] info message, as the intent is less certain.
|
||||||
|
|
||||||
|
### Exceptions:
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
### Related resources:
|
||||||
|
|
||||||
|
* Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!
|
Reference in New Issue
Block a user