On 12/20/2015 10:30 AM, Jon LaBadie wrote:
On Sun, Dec 20, 2015 at 01:42:30PM +0100, Joachim Backes wrote:
> Hi all,
> Running F23, and my shell is /bin/bash.
> My problem: suppose you define an alias:
> alias x='echo PAR=$1'
> Now call the alias by:
> x 1
> Output: PAR= 1
> My question: why do I get the blank before the "1"?
aliases are not intended to be used with positional parameters.
You will need to use functions to do that.
As to the space, "x", not "x 1" gets replaced by the
alias definition. So
$ x 1
$ echo PAR=$1 1
As noted above, positional parameters to not exist for aliases
so this becomes
$ echo PAR= 1
Actually, $1 does get expanded, but not until after the alias expansion.
Your current shell probably has no positional parameters, so $1 is NULL.
alias x='echo PAR=$1'
set foobar # Your current shell now has a parameter.
echo $* # See it.
It's simple. Aliases do not interpret parameters. They just do a simple
string substitution of the defined string for the alias name. After
that substitution, the resulting command line is executed just as
though you typed it at the terminal.
Bob Nichols "NOSPAM" is really part of my email address.
Do NOT delete it.