Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 09 Sep 2017 11:27:55 -0400
From:      Ernie Luzar <luzar722@gmail.com>
To:        Yuri Pankov <yuripv@gmx.com>
Cc:        Polytropon <freebsd@edvax.de>,  "freebsd-questions@freebsd.org" <freebsd-questions@freebsd.org>
Subject:   Re: script code for end-line
Message-ID:  <59B4087B.2070005@gmail.com>
In-Reply-To: <c8715d2d-cb1f-592b-7541-a556fa5645a7@gmx.com>
References:  <59B332A3.1000205@gmail.com> <20170909030257.d2718c00.freebsd@edvax.de> <c8715d2d-cb1f-592b-7541-a556fa5645a7@gmx.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Yuri Pankov wrote:
> On Sat, 9 Sep 2017 03:02:57 +0200, Polytropon wrote:
>> 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). ;-)
> 
> Actually, you can insert real ^M characters and /bin/test should be able 
> to handle them - press ctrl+V ctrl+M.
> .
> 

I read the man page on the test command and did not come away with the 
syntax to use in a script. An example showing usage inside of the "if" 
statement sure would be more helpful to understand how it works.

Thanks



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?59B4087B.2070005>