我的问题很简单。
我在一个更大的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!
感谢您的帮助!
答案 0 :(得分:1)
在echo / print包装器中,用单个qoutes包装变量print_common
示例:
\<iostream\>
如果你没有将它包装在引号内,它将:
function print_err () { echo "ERROR: '$(print_common $@)'"; }
如果你把一个星号(*)作为一个参数给一个echo命令,它会显示一个列表,列出目录中执行scirpt的每个文件。
使用引号会显示您想要的内容。