Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使bash接受函数参数_Linux_Bash_Shell_Command Line_Terminal - Fatal编程技术网

Linux 使bash接受函数参数

Linux 使bash接受函数参数,linux,bash,shell,command-line,terminal,Linux,Bash,Shell,Command Line,Terminal,因此,我有一个名为myCMD的bash脚本,它以function()的形式将参数字符串包含在其中 但是,当我进入命令行时: myCMD function() 它会抱怨-bash:意外标记“(” 当我执行myCMD“function()”时,尽管它可以工作 但是,我不希望每次使用此命令时都必须将参数用引号括起来 有没有一种方法可以配置终端/my脚本,这样只要输入myCMD function(),它就可以将function()作为字符串处理,即使没有引号,也不会相应地抱怨?必须对()进行转义,就像

因此,我有一个名为myCMD的bash脚本,它以function()的形式将参数字符串包含在其中

但是,当我进入命令行时:

myCMD function()
它会抱怨
-bash:意外标记“(”

当我执行
myCMD“function()”
时,尽管它可以工作

但是,我不希望每次使用此命令时都必须将参数用引号括起来


有没有一种方法可以配置终端/my脚本,这样只要输入
myCMD function()
,它就可以将
function()
作为字符串处理,即使没有引号,也不会相应地抱怨?

必须对
()
进行转义,就像bash特别处理它们一样。引号将转义为
\(\)
。或者您可以重命名
函数()
,使其名称中不包含
()

大多数shell不仅仅是bash在公开场合处理
()
,因此您别无选择,只能引用它:
“()”
'(),
$()'
\(\)
在bash“函数”中是一个保留字,所以要小心

为什么不更改myCMD脚本以执行您想要的操作

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

#!/bin/bash 
read line 
myCMD "$line"
使用时需要调用包装器,然后输入字符串:

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

嗯。你想用它做什么?你可以输入“函数”,然后在后面添加参数。