[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: BUG?: (or what's going on?) test for NL == NL fails (bash-4.3.39(3)-
From: |
Linda Walsh |
Subject: |
Re: BUG?: (or what's going on?) test for NL == NL fails (bash-4.3.39(3)-release) |
Date: |
Sun, 02 Aug 2015 13:30:14 -0700 |
User-agent: |
Thunderbird |
also noticed this similar strange behavior:
used 'ord'** for this test (trying to compare decimal val of chars)
isatty () { test -c /proc/self/fd/1 ; }
ord () { local nl=""; isatty && nl="\n"; printf "%d$nl" "'$1" ; }
ord "$(printf "\n")"
0
ord "$(printf "\t")"
9
ord "$(printf " ")"
32
ord "$(printf "\r")"
13
-- but this DOES work:
ord $'\n'
10
----
Traditional separators and CR work, -- just "\n".
Am just looking for an efficient way to test for 0x0a
as last char in a var, ... after another 20 minutes of
trying things at random, found this:
> printf "%d\n" "'${a:0-1:1}'"
10
Oddly, the final single quote in the string seems unnecessary.
But that (or into a var: printf -v var) both work...but I
feel a bit contorted trying so many odd ways to get something
that I thought would be simple, to work.
Still... why so many problems with \n?
I tried unsetting IFS ---- even setting both "eol" chars,
explicitly (I wondered if both eol chars were 'undef'
w/stty:
stty
speed 38400 baud; line = 0;
kill = ^X; eol = #; eol2 = #; susp = ^Y; ## yes, I set both eol chars to '#'
only to find it didn't change anything (LF was still end of line).
:-(