Skip to content

Files

Latest commit

 

History

History
35 lines (22 loc) · 1.06 KB

SC1017.md

File metadata and controls

35 lines (22 loc) · 1.06 KB

Pattern: Use of literal carriage return in shell script

Issue: -

Description

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.

Example of incorrect code:

$ cat -v somescript
#!/bin/sh^M
echo "Hello World"^M

Example of correct code:

$ cat -v somescript
#!/bin/sh
echo "Hello World"

Further Reading