|
From: | Matthew Woehlke |
Subject: | Re: Query regarding ${parameter:-word} usage |
Date: | Wed, 23 Dec 2009 19:26:48 -0600 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.23) Gecko/20090825 Fedora/2.0.0.23-1.fc10 Thunderbird/2.0.0.23 Mnenhy/0.7.5.0 |
Mun wrote:
I am moving from ksh93 to bash and have a question regarding the usage of ${parameter:-word} parameter expansion. In ksh, I use ${*:-.} as an argument to commands. For example: function ll { ls --color -Flv ${*:-.} } This technique passes '.' as an arg to 'ls' if I didn't pass any args on the command line (as I'm sure you all already know). But this does not work with bash; nor have I been able to come up with a technique that accomplishes the same thing. My only workaround so far is to put an 'if' loop around the 'ls' that tests $# and takes the appropriate branch depending on the number of args (i.e., 0 or non-zero). Any suggestions would be welcomed. Thanks in advance.
Not sure why the above doesn't work, though you probably mean to use "$@" and not $* (presence/absence of ""s is intentional). This seems to work for me:
function ll { ls --color -Flv "${@:-.}" } -- Matthew Please do not quote my e-mail address unobfuscated in message bodies. -- "It's not easy for [Microsoft] to accept [competing fairly]" -- Dave Heiner (a Microsoft VP, paraphrased)
[Prev in Thread] | Current Thread | [Next in Thread] |