make bash接受函数参数

时间:2013-08-27 15:26:49

标签: linux bash shell command-line terminal

所以我有一个名为myCMD的bash脚本,它以function()的形式接受其参数字符串

然而,当我进入命令行时:

myCMD function()

它会抱怨-bash: syntax error near unexpected token '('

当我做myCMD "function()"但它会起作用

然而,我不想每次使用此命令时都必须将参数包装在引号中

有没有办法配置终端/我的脚本,这样如果您只是输入myCMD function(),它会将function()视为字符串,即使没有引号也不会相应地投诉?

3 个答案:

答案 0 :(得分:1)

()必须转义一些bash如何特别对待它们。报价将与\(\)一样逃脱。或者,您可以将function()重命名为其名称中没有()

答案 1 :(得分:0)

大多数贝壳不只是bash特别公开对待(),所以你别无选择,只能引用它:"()"'()'$'()'或{{1} }。

答案 2 :(得分:0)

在bash中,“function”是一个保留字,所以要小心。

https://www.gnu.org/software/bash/manual/html_node/Reserved-Word-Index.html

为什么不改变myCMD脚本来做你想做的事?

您也可以使用读取命令

包装myCMD
#!/bin/bash 
read line 
myCMD "$line"

用法需要调用包装器然后输入字符串:

> myCMDWrapper
function()
myCMD was invoked with function()