On 2007/07/28 13:58 (GMT-0700) Randall R Schulz apparently typed:

> On Saturday 28 July 2007 13:32, Felix Miata wrote:

>> I'm having no luck figuring out why

>> alias Vol='tune2fs -l $1 | grep volume'

> Aliases don't take positional parameters, at least not in BASH (I think 

So it's just an accident that the following aliases all work as I want/expect?
alias ll='ls -l $*'
alias rpmqa='rpm -qa | grep $*'
alias test='echo $*'
alias vol='tune2fs -l $1'

> they do in the Csh family, if I recall correctly). They simply expanded 
> verbatim in front of any arguments you give, so if you invoke it 
> with "/dev/hda7" as an argument, it's like running this command:

> % tune2fs -l $1 | grep volume /dev/hda7

It's still clear as mud how "don't take positional parameters" translates
into moving /dev/hda7 to the end of the whole string.

> What you're doing is tryting to run grep on /dev/hda7. Let's hope you 
> don't have read access!

I see what you wrote, but don't understand how /dev/hda7 shows up at the end
of everything.

>> causes a usage message when 'Vol /dev/hda7' is run. Can anyone
>> explain what I'm doing wrong, or provide a better method to discover
>> a volume label? --

> Unlike the very limited capabilities of aliases, shell procedures are 
> just like separate scripts, except no file need be loaded to invoke 
> them. You can get the effect I think you want with this:

> Vol() {
>  tune2fs -l "$1" |grep volume
> }

I made a script with nothing but that in it, but it returns nothing.

> (If you put that all on one line, you'll need a semicolon after "volume" 
> and before the closing brace.)

> Beware that if you're going to try this, you should undefine the alias 
> first. They intefere, and if I'm not mistaken the alias will override 
> the shell procedure.

> Once you get something you like, put it in your .bashrc, though 
> realistically, there's no particular reason not to just make a shell 
> script out of this.

Other than the quotes, I don't see the difference between the content of your
sample script, and putting essentially the same thing into .bashrc, which is
where all my aliases live, and why I use aliases instead of simple scripts
(easier to copy one file to new username on new installation).

> Lastly, don't use an "exit" for early return in a shell procedure. It 
> will apply to the shell that invoked it. There's a "return" keyword 
> that works the same as exit and causes just the shell procedure to 
> terminate before reaching its last statement, not the whole shell.

I appreciate the reply, but I'm not sure I understand any more now than I did
before starting the thread. :-(
-- 
"All scripture is God-breathed and is useful for teaching,
rebuking, correcting, and training in righteoousness."
                                        2 Timothy 3:16 NIV

 Team OS/2 ** Reg. Linux User #211409

Felix Miata  ***  http://mrmazda.no-ip.com/
-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to