0

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

但是当我进入命令行时:

myCMD function()

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

当我这样做时myCMD "function()",它会起作用

但是我不想每次使用此命令时都必须将参数括在引号中

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

4

3 回答 3

1

()必须对 bash 以其他方式特别对待它们的方式进行转义。引号也会转义\(\)。或者你可以重命名function()为没有()它的名字。

于 2013-08-27T15:32:07.993 回答
0

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

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

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

您还可以使用 read 命令包装 myCMD

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

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

> myCMDWrapper
function()
myCMD was invoked with function()
于 2013-08-27T18:35:20.327 回答
0

大多数 shell 不仅仅是 bash()在公开场合特别对待,所以你别无选择,只能引用它:"()", '()',$'()'\(\).

于 2013-08-27T15:47:05.397 回答