ins*_*r-g 7 bash shell arguments function
我想知道如何将函数中的参数bash正确"转发"到另一个函数或程序.
例如,在Mac OS X中有一个命令行程序open(手册页),它将使用其默认应用程序打开指定的文件(即它将在Xcode中打开*.h文件,或在Finder中打开文件夹等).我想简单地调用open没有参数来打开Finder中的当前工作目录,或者为它提供正常使用它的典型参数.
我想,"我只会使用一个功能!" 呃,我想不是那么快.这是我得到的:
function open
{
if [ $# -eq 0 ]; then
/usr/bin/open .
else
/usr/bin/open "$*"
fi
}
Run Code Online (Sandbox Code Playgroud)
简单地调用open很有效,它会在Finder中打开工作目录.调用open myheader.h效果很好,它在Xcode中打开"myheader.h".
但是,调用open -a /Applications/TextMate.app myheader.h尝试在TextMate而不是Xcode中打开文件会导致错误"无法找到名为'/Applications/TextMate.app myheader.h'的应用程序".似乎传递"$*"给/usr/bin/open我的整个参数列表只是作为一个参数转发.
将函数更改为仅使用usr/bin/open $*(无引用)会导致带空格的路径出现问题.open other\ header.h然后调用会导致错误"文件/用户/检查器-g/other和/Users/inspector-g/header.h不存在",但解决了另一个问题.
必须有一些转发参数的约定,我只是错过了.
| 归档时间: |
|
| 查看次数: |
1229 次 |
| 最近记录: |