bash - 输入中的转义括号

标签 bash

我正在尝试编写一个快速脚本来将简单的计算传递给 bc,但是当我尝试涉及括号的计算时,出现以下错误:

-bash: syntax error near unexpected token `('

如何编写脚本来转义给定的任何字符?

这是我现在的代码:

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

我这样调用它:

calc 100 + 10 + (10 * 10)

引用输入是可行的,但我不想这样做(我显然很懒,试图让数字相加变得更容易)。

最佳答案

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

错误不在 calc() 中,而是在调用它的代码中。括号和星号是 shell 中的特殊字符,因此需要用引号引起来。在 calc() 中您无能为力,因为 shell 在调用它之前就已经呕吐了。

Quoting the input works but I'd like to not have to.

这是不可避免的。抱歉!

关于bash - 输入中的转义括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55831133/

相关文章:

string - 逐行比较 BASH 中的两个文件

bash - 为什么 set -e; true && false && true 不退出?

bash - 什么时候使用大括号扩展?

linux - 在 Bash 脚本中使用 find 命令并排除子目录

linux bash 脚本 -> 更新远程 mysql 表 -> 错误 [0m

linux - 将变量传递给子 shell 时出现问题

bash - IP地址转换器

linux - 一段时间内数据流的唯一计数和排序

bash - 如何将第一个命令的输出通过管道传递到下一个命令的特定位置?

bash - awk:调用 awk 之外的函数