mirror of
https://github.com/koalaman/shellcheck.git
synced 2025-10-03 19:29:44 +08:00
Created SC1017 (markdown)
32
SC1017.md
Normal file
32
SC1017.md
Normal file
@@ -0,0 +1,32 @@
|
||||
## Literal carriage return. Run script through `tr -d '\r'` .
|
||||
|
||||
### Problematic code:
|
||||
|
||||
```sh
|
||||
$ cat -v myscript
|
||||
#!/bin/sh^M
|
||||
echo "Hello World"^M
|
||||
```
|
||||
|
||||
### Correct code:
|
||||
|
||||
```sh
|
||||
$ cat -v myscript
|
||||
#!/bin/sh
|
||||
echo "Hello World"
|
||||
```
|
||||
### Rationale:
|
||||
|
||||
The script uses Windows/DOS style `\r\n` line terminators instead of UNIX style `\n` terminators. The additional `\r` aka `^M` aka carriage return characters will be treated literally, and results in all sorts strange bugs and messages.
|
||||
|
||||
You can verify this with `cat -v yourfile` and see whether or not each line ends with a `^M`. To delete them, open the file in your editor and save the file as "Unix", "UNIX/OSX Format", `:set ff=unix` or similar if it supports it.
|
||||
|
||||
If you don't know how to get your editor to save a file with Unix line terminators, you can use `tr`:
|
||||
|
||||
tr -d '\r' < badscript > goodscript
|
||||
|
||||
This will read a script `badscript` with possible carriage returns, and write `goodscript` without them.
|
||||
|
||||
### Exceptions:
|
||||
|
||||
None
|
Reference in New Issue
Block a user