shell scripting problems
George Davidovich
freebsd at optimis.net
Sat Nov 29 02:39:48 PST 2008
On Fri, Nov 28, 2008 at 11:31:17PM -0700, Tim Judd wrote:
> On Fri, Nov 28, 2008 at 11:08 PM, Sahil Tandon <sahil at tandon.net>
> wrote:
> > Tim Judd <tajudd at gmail.com> wrote:
> >
> > I am not sure what the problem is, but are you just looking for the
> > output of "pkg_info -qxL" on the *first* instance of xorg-fonts-*?
> >
> > % pkg_info -qL `pkg_info | grep xorg-fonts | head -1 | cut -d\ -f1`
> >
> > FWIW, your regexp also looks faulty.
>
> I'm sure it's faulty
>
> Which is why I'm asking for help
What you were asking wasn't clear, and could have included a script
problem, a port update problem, a pkg_info problem, and/or a regex
problem. And then, I'm scratching my head wondering how you're making
use of the output of the -L switch.
> My regexes (in it's various forms) produce the output similar to:
> xorg-fonts-75dpi
> xorg-fonts
> xorg-fonts-100dpi
> ...
>
> and I'm wanting my regex to return the 2nd value, in this example, in
> this list.
If that's the case, where does your regex of "^$PKG-[0-9,._]+$" fit into
all this? And why would you expect pkg_info to match on something like
'^xorg-fonts$' when, AFAICT, there is no port by that name? Again,
you're not being clear.
> The problem is the shell is taking the end anchor $ as the start of a
> variable, and no matter how I escape it, it seems to never work.
The end-of-line anchors work fine. For the following I've used bash,
but you can copy the same into a /bin/sh script for identical results:
# PKG=cyrus
# pkg_info -Ex $PKG
cyrus-sasl-2.1.22_1
cyrus-sasl-saslauthd-2.1.22
# pkg_info -Ex $PKG.*1
cyrus-sasl-2.1.22_1
cyrus-sasl-saslauthd-2.1.22
# pkg_info -Ex ^$PKG.*1\$
cyrus-sasl-2.1.22_1
I'd suggest you submit your script or an abbreviated version.
--
George
More information about the freebsd-questions
mailing list