Unix Bash - 参考内部函数并传递参数

时间:2014-03-26 19:39:47

标签: linux apache bash unix ubuntu

我正在使用MacPorts方法在OSX中安装AMP服务器(在Ubuntu中更容易)。我想在名为apachectl的路径中添加一个bash脚本,该脚本将引用/opt/local/apache2/bin/apachectl。我已经能够做到这一点,但我想知道如何将参数传递给apachectl,然后将参数传递给/opt/local/apache2/bin/apachectl

e.g. apachectl -t >>> /opt/local/apache2/bin/apachectl -t

对于那些想知道我为什么不重新排序我的路径的人,我问我可以用其他命令做同样的事情,例如ls -l我目前拥有ll( Ubuntu风格)看起来像

ls -l $1

在文件中。

唯一的方法是为什么这样做位置参数,比如我上面所做的那些?

1 个答案:

答案 0 :(得分:2)

对于你想要的,你想使用" $ @"

来自this answer

this page解释
$@ -- Expands to the positional parameters, starting from one. 
When the expansion occurs within double quotes, each parameter 
expands to a separate word. That is, "$@" is equivalent to "$1" 
"$2" ... If the double-quoted expansion occurs within a word, the 
expansion of the first parameter is joined with the beginning part 
of the original word, and the expansion of the last parameter is 
joined with the last part of the original word. When there are no 
positional parameters,  "$@" and $@ expand to nothing (i.e., they are removed).

这意味着您可以按如下方式调用ll脚本:

ll -a /

" $ @"将-a /扩展为单独的位置参数,这意味着您的脚本实际运行

ls -l -a /

你也可以使用一个函数:

apachectl() {
  /opt/local/apache2/bin/apachectl "$@"
}