bash:覆盖echo以在脚本中打印自定义前缀
发布时间:2020-12-16 01:51:30 所属栏目:安全 来源:网络整理
导读:我有一些冗长的脚本互相调用,我希望他们的输出更具描述性.我们的想法是为每个脚本自定义echo命令,如下所示. 我的问题是,如何使用echo进行非递归? 这是script1.sh #!/bin/bash#Original version:#function echo(){ echo $(basename $0 .sh): $1; }#Version a
我有一些冗长的脚本互相调用,我希望他们的输出更具描述性.我们的想法是为每个脚本自定义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 解决方法
使用builtin关键字:
function echo(){ builtin echo $(basename $0 .sh): $1; } 这里的帮助页面: $help builtin builtin: builtin [shell-builtin [arg ...]] Execute shell builtins. Execute SHELL-BUILTIN with arguments ARGs without performing command lookup. This is useful when you wish to reimplement a shell builtin as a shell function,but need to execute the builtin within the function. Exit Status: Returns the exit status of SHELL-BUILTIN,or false if SHELL-BUILTIN is not a shell builtin.. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |