bug-bash
[Top][All Lists]
Advanced

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

Re: Strings manipulation without using variables


From: Bob Proulx
Subject: Re: Strings manipulation without using variables
Date: Wed, 31 Mar 2010 11:03:17 -0600
User-agent: Mutt/1.5.18 (2008-05-17)

Francesco Pretto wrote:
> I'm sorry if this isn't the wrong place to ask, but I couldn't find an user
> mailing list.

The address@hidden mailing list is available for generic help
questions such as this.

> My question is if it's possible to manipulate strings without
> using  variables. Or, how to do the following in one line without using a
> variable:

The shell itself needs a variable to perform the replacement
operation.  But you don't need to structure your task that way.

> FILENAME=$(ls | tail --lines=1)

Note that your locale setting (LANG, LC_ALL) affects sort ordering.

> echo ${FILENAME%.*}

Since you already have a pipeline you could do this:

  FILENAME=$(ls | tail --lines=1 | sed 's/\.[^.][^.]*$//')

Or with GNU sed using the \+ extension:

  FILENAME=$(ls | tail --lines=1 | sed 's/\.[^.]\+$//')

I assume that 'ls' isn't what you actually are doing, that you have
reduced the test case to something smaller (thank you for that!)
because the shell can list the directory itself.

  for f in *;do FILENAME=$f; done
  ( Or even: for FILENAME in *;do : ; done )

And you could then slip in your variable manipulation right there.

  for f in *;do FILENAME=${f%.*}; done
  echo $FILENAME

Bob




reply via email to

[Prev in Thread] Current Thread [Next in Thread]