如何在bash参数的圆括号之前关闭必要的反斜杠?

时间:2013-10-21 00:05:22

标签: bash arguments brackets

如何运行我的脚本: sh Calculator.sh 1 + 2 * s\(4\)

s(x)是x

的正弦

现在我想做这样的事情: sh Calculator.sh 1 + 2 * s(4)

这给了我错误: bash: syntax error near unexpected token('`

请帮帮我。

2 个答案:

答案 0 :(得分:3)

使用引号?

sh Calculator.sh "1 + 2 * S(4)" 

答案 1 :(得分:1)

您需要引用或转义括号(和*以及任何其他shell元字符)才能将它们传递给您的脚本。当shell看到像sh Calculator.sh 1 + 2 * s(4)之类的命令时,它会运行它解析命令(做一些事情,比如用文件列表替换*并在括号中弄糊涂)然后再查看命令第一个字来决定正在执行什么命令。您看到的错误早在您的脚本启动之前就会发生(事实上,这会阻止您的脚本启动),因此您无法在脚本中执行任何操作来避免它。

Shell命令必须遵守shell语法。没有办法为你的命令做一个例外(没有编辑shell程序本身,就是这样)。