Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 9 Sep 2017 03:02:57 +0200
From:      Polytropon <freebsd@edvax.de>
To:        Ernie Luzar <luzar722@gmail.com>
Cc:        "freebsd-questions@freebsd.org" <freebsd-questions@freebsd.org>
Subject:   Re: script code  for end-line
Message-ID:  <20170909030257.d2718c00.freebsd@edvax.de>
In-Reply-To: <59B332A3.1000205@gmail.com>
References:  <59B332A3.1000205@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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 ...
fi

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



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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20170909030257.d2718c00.freebsd>