输入中的转义括号

时间:2019-04-24 13:23:06

标签: bash

我试图编写一个快速脚本以将简单的计算传递到BC,但是当我尝试使用方括号进行计算时,出现以下错误:

  

-bash:意外令牌'('

附近的语法错误

如何编写脚本以转义给它的任何字符?

这是我现在拥有的代码:

calc()
{
    echo "$*" | bc
}

我用类似这样的名称来称呼它

calc 100 + 10 + (10 * 10)

引用输入有效,但是我不想(我很懒,试图使加数变得容易)。

1 个答案:

答案 0 :(得分:2)

calc '100 + 10 + (10 * 10)'
calc 100 + 10 + '(10 * 10)'
calc 100 + 10 + \(10 \* 10\)

错误不在calc()中,而在调用它的代码中。括号和星号是外壳中的特殊字符,因此您需要引用它们。在calc()内您无能为力,因为shell甚至在调用它之前就已经开始倒空。

  

引用输入有效,但我不想这样做。

这是不可避免的。抱歉!