【发布时间】:2012-01-12 09:07:52
【问题描述】:
我有一些冗长的脚本相互调用,我希望它们的输出更具描述性。这个想法是为每个脚本自定义 echo 命令,如下所示。
我的问题是,如何使用echo 使其非递归?
这是script1.sh
#!/bin/bash
#Original version:
#function echo(){ echo $(basename $0 .sh): $1; }
#Version after fixes
function echo(){ builtin echo -n "$(basename $0 .sh): ">&2; builtin echo $@ ; }
echo Info
./script2.sh
这是 script2.sh
#!/bin/bash
#Original version:
#function echo(){ echo $(basename $0 .sh): $1; }
#Version after fixes
function echo(){ builtin echo -n "$(basename $0 .sh): ">&2; builtin echo $@ ; }
echo Info
exit 0
所以输出应该是:
>./script1.sh
script1: Info
script2: Info
--- 编辑
奖金:
>./script1.sh 2> /dev/null
Info
Info
【问题讨论】:
-
unset -f echo后面应该使用 -
您也可以将该函数声明放入它自己的文件中,然后将
source放入需要它的脚本中。
标签: bash overloading verbosity