0

我有一个my_mv.sh如下所示的包装脚本(我正在使用 bash):

#/bin/bash
function my_mv(){   
FILE="${@: -1}" # bash or ksh,zsh 
echo $FILE
if [ -f $FILE ];   
then   
    mv -i $@                                                                                                                                                                     
else   
    mv $@   
fi   
}   

当我将它作为脚本使用并像 一样直接运行时./my_mv.sh file1 file2,结果符合预期。但是,当我将函数 my_mv放入~/.bashrc获取它时,将出现无限循环。那么这两种方法有什么区别呢?如何更改脚本以便正确获取它?

顺便说一句,当使用 zsh 时,这两种方法的结果相似。

4

1 回答 1

2

您实际上是my_mv在 .bashrc 中命名它,还是实际上命名它mv来覆盖默认值?

如果是这样,请使用command mv而不是仅mv在您的函数中调用系统版本而不是递归。

如果您只是将其作为 运行./my_mv.sh file1 file2,它不会做任何事情,因为该函数已定义但未调用。

于 2013-01-31T17:13:55.547 回答