在Bash中,我的个人资料中有一个功能:
FCT () { /usr/bin/someProg -id=myUser -pa=myPass $*; }
现在,我可以完美地启动someProg并执行我想要的操作。 但是当我想像这样使用它时:
FCT -comma 'select * from table'
是忽略单引号并将*替换为当前目录中的所有文件
FCT -comma select \* from table
是一样的...逃脱被忽略
设置为+ f / -f时,它按预期进行,但不希望这样做,因为这对于团队来说很容易。 知道为什么单引号和-escape被忽略吗?
答案 0 :(得分:1)
有人知道为什么单引号和-escape被忽略吗?
因为$*
展开了each parameter separated by the first character in IFS,之后结果也经历了word splitting。因此,无论内容如何,生成的参数都将由空格,制表符和换行符分隔。
使用"$@"
。