[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-bash] View Positional Parameters of Commands
From: |
Clark Wang |
Subject: |
Re: [Help-bash] View Positional Parameters of Commands |
Date: |
Tue, 28 Jul 2015 23:12:53 +0800 |
On Tue, Jul 28, 2015 at 10:58 PM, Michael Convey <address@hidden> wrote:
> I'm trying to understand positional parameters. If I run the the following
> command:
>
> ls -al
>
$*N* is a shell terminology. It has nothing to do with ls.
>
> echo $0 should equal ls
> echo $1 should equal -a
> echo $2 should equal -l
>
> However, no matter which command I run, echo $0 always equals "bash" and
> $1, $2, etc. are empty. I suspect this is because my original command is
> being run in a subshell and the echo commands are being run in a different
> subshell, which is invoked by parent shell as the 'bash' command. So, I
> tried to run these commands using 'source command', to run everything in
> the parent shell. However, I get the following error:
>
> bash: source: /usr/bin/command: cannot execute binary file
>
> So I tried the following:
>
> ls -al; echo $0; echo $1
>
> But, I get the same results. What is the best way to do what I'm trying to
> accomplish -- view positional parameters of commands I run?
>
For example:
$ foo() { echo $0 $1 $2; }
$ foo
/Users/clarkw/utils/bin/bash
$ foo -a
/Users/clarkw/utils/bin/bash -a
$ foo -al
/Users/clarkw/utils/bin/bash -al
$ foo -al bar
/Users/clarkw/utils/bin/bash -al bar
$