0
function ctrace {
  echo "+ $@"
  "$@"
}

ctrace echo "hi"

我如何让这个函数输出(带引号):

echo "hi"

在这个版本中,引号丢失了echo hi......这是另一个例子:

a=b
ctrace echo $a

这应该输出echo $a而不是echo b

4

2 回答 2

1

问题不在于函数,而在于调用者。

在第一种情况下,引号在函数获取参数之前被去掉。在第二个中,$a替换是在它到达函数之前完成的。

尝试:

ctrace 'echo "hi"'
ctrace 'echo $a'
于 2013-03-04T19:45:07.460 回答
0

您需要将字符串括在单引号内

ctrace 'echo "hi"'
ctrace 'echo $a'
于 2013-03-04T19:45:35.183 回答