我有一个名为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
和 source 时,会出现无限循环。
那两种方法有什么区别?如何更改脚本以便可以正确获取?
答案 0 :(得分:2)
您实际上是在.bashrc中将其命名为my_mv
,还是实际上将其命名为mv
,以覆盖默认值?
如果是这样,请在函数中使用command mv
而不是mv
来调用系统版本而不是递归。
如果您只是将其作为./my_mv.sh file1 file2
运行,它将不会执行任何操作,因为该函数已定义但未调用。