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!*