Web lists-archives.com

[SOLVED II] (Thomas) Re: Bash file to variable string problem -- must be simple. What am I missing?





On 3/3/19 2:43 AM, Thomas Schmitt wrote:
Hi,

if spaces are involved, then quotation marks hould be put around the
argument of "echo".

Using the leading blank from David Wright's post:

  $ fname=" long file with spaces.mp4"
  $ x=`echo $fname | rev | cut -d. -f2 | rev`
  $ test "$x".mp4 = "$fname" && echo IS EQUAL
  $

I.e. "$x".mp4 and "$fname" are not equal.
That's because the leading blank got lost in the "echo" run:

  $ echo "'$x'"
  'long file with spaces'

Now with quotation marks around $fname to preserve the leading blank:

  $ x=`echo "$fname" | rev | cut -d. -f2 | rev`
  $ test "$x".mp4 = "$fname" && echo IS EQUAL
  IS EQUAL

A similar effect would happen with double blanks inside the name:

  $ fname="long file with  double  spaces.mp4"
  $ x=`echo $fname | rev | cut -d. -f2 | rev`
  $ echo "'$x'"
  'long file with double spaces'
  $ x=`echo "$fname" | rev | cut -d. -f2 | rev`
  $ echo "'$x'"
  'long file with  double  spaces'


Have a nice day :)

Thomas



Good thought Thomas!

This also worked:

  $ fname=`echo "$fname" | rev | cut -d. -f2 

Now, the actual file did not have a leading (or trailing) space --- which I focused on.

But IT DID have 2 adjoining spaces Within the filename.

Enclosing $fname in "", worked perfectly.


That simple thing, that I thought I was missing, I would not have guessed at. Two adjoining spaces. :-)

Thank you!