[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash parameter expansion "doesn't like" dots?



On 04/03/2024 10:07, David Wright wrote:
On Sun 03 Mar 2024 at 17:58:53 (-0600), Albretch Mueller wrote:
  bash doesn't seem to like dots too close to brackets:

  echo "${_VAR//[^0-9a-zA-Z.,_-]/}"

  works fine.

On 3/3/24, Albretch Mueller <lbrtchx@gmail.com> wrote:
_VAR="admissions.piedmont.edu_files?trackid=wnm:1980&PDFfiller=what-is-the-second-fundamental-theorem-of-calculus(1).pdf"

echo "${_VAR//[^a-zA-Z0-9_-]/}"

echo "${_VAR//[^a-zA-Z0-9_-.]/}"
                              ↑↑↑

That's a range, except that it isn't because it's written backwards.
Check for yourself by testing with 9-0 instead of 0-9.

Cheers,
David.

So the problem isn't about dots, but the handling of the - which has to go last if it isn't to be treated as a range marker.

https://www.gnu.org/software/grep/manual/html_node/Character-Classes-and-Bracket-Expressions.html
says:

‘-’
    represents the range if it’s not first or last in a list or the ending point of a range. To make the ‘-’ a list item, it is best to put it last.

--
John


Reply to: