让脚本即能在 bashrc 中 source, 又能作为一个 command 单独调用

让脚本即能在 bashrc 中 source, 又能作为一个 command 单独调用

比如俺有个 rename.sh, 其中定义了一个函数 rename:
复制内容到剪贴板
代码:
function rename()
{
   ... ...
}

# 这几行是关键
if [[ $- != *i* ]]; then
    rename "$@"
fi
如果 rename.sh 在 bashrc 中被 source, 则 rename() 会被定义在当前的 shell 中; 如果不想在 bashrc 中 source, rename.sh 也可以单独使用       
两种方式各有优缺点: 函数执行速度快, 但会使当前 shell 占用较多内存 (其实也没有多少哈 ); 脚本执行慢, 但不占用当前 shell 的内存      
好方法

P.S.
在 [[   ]] 中使用 * 的同学要注意bash版本哦(好像要求 bash 3+ ?)
还是比较喜欢  case 来做这个      
引用:
原帖由 li-jiahuan 于 2008-10-17 19:39 发表
在 [[   ]] 中使用 * 的同学要注意bash版本哦(好像要求 bash 3+ ?)
还是比较喜欢  case 来做这个
用于 == 运算符的 glob 风格的字符串匹配早在 2.05b 就已经支持了, 3.0 引入了 =~ 运算符可以支持正则表达式的匹配