我正在使用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
在文件中。
唯一的方法是为什么这样做位置参数,比如我上面所做的那些?
答案 0 :(得分:2)
对于你想要的,你想使用" $ @"
的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 "$@"
}