所以我有一个名为myCMD的bash脚本,它以function()的形式接受其参数字符串
然而,当我进入命令行时:
myCMD function()
它会抱怨-bash: syntax error near unexpected token '('
当我做myCMD "function()"
但它会起作用
然而,我不想每次使用此命令时都必须将参数包装在引号中
有没有办法配置终端/我的脚本,这样如果您只是输入myCMD function()
,它会将function()
视为字符串,即使没有引号也不会相应地投诉?
答案 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()