关闭bash变量替换

时间:2013-03-04 19:39:23

标签: linux bash

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

ctrace echo "hi"

如何输出此功能(带引号):

echo "hi"

在此版本中引号丢失echo hi ...这是另一个示例:

a=b
ctrace echo $a

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

2 个答案:

答案 0 :(得分:1)

问题不在于功能,而在于呼叫者。

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

尝试:

ctrace 'echo "hi"'
ctrace 'echo $a'

答案 1 :(得分:0)

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

ctrace 'echo "hi"'
ctrace 'echo $a'