bash echo wrapper问题

时间:2015-05-10 10:15:54

标签: bash printf echo wrapper

我的问题很简单。

我在一个更大的bash脚本中使用了一些echo / print包装器而不是简单的echo调用。例如:

!/bin/bash
function print_common () { echo "$@"; }
function print_inf    () { echo "INFO: $(print_common $@)"; }
function print_war    () { echo "WARN: $(print_common $@)"; }
function print_err    () { echo "ERROR: $(print_common $@)"; }

一般来说,它运作良好。下面的script1.sh:

!/bin/bash
print_err "Whoops!"

产生

ERROR: Whoops!

但是,script2.sh:

!/bin/bash
print_err "*** Whoops!"

产生

ERROR: script2.sh Whoops!

预期的打印结果是:

ERROR: *** Whoops!

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

在echo / print包装器中,用单个qoutes包装变量print_common

示例:

\<iostream\>

如果你没有将它包装在引号内,它将:

function print_err    () { echo "ERROR: '$(print_common $@)'"; }

如果你把一个星号(*)作为一个参数给一个echo命令,它会显示一个列表,列出目录中执行scirpt的每个文件。

使用引号会显示您想要的内容。