script code for end-line

Polytropon freebsd at
Sat Sep 9 01:03:02 UTC 2017

On Fri, 08 Sep 2017 20:15:31 -0400, Ernie Luzar wrote:
> I have a file that has blank lines with ^M in position one.
> I have this  if [ "$end-line" = "^M"]; then
> Is that the correct way to code that between the quotes?

That will only match the literal string ^M (^ and M).
String evaluation and comparison at this low level
isn't a native skill of sh. There is a way of encoding
characters as octal values, such as \015 for \r, which
equals ^M and 0x0D, but /bin/test (which is [) can only
compare strings.

Here is a terrible workaround (not tested):

if [ `echo ${end-line} | od -x | head -n 1 | awk '{ print $2 }'` = "000d" ]; then
	... do something ...

Check if there is already a tool for what you're trying
to accomplish (e. g., tr, sed, recode, iconv). ;-)

Magdeburg, Germany
Happy FreeBSD user since 4.0
Andra moi ennepe, Mousa, ...

More information about the freebsd-questions mailing list