Sh 如何使用grep制作脚本--包括多文件扩展名
myScript.sh:Sh 如何使用grep制作脚本--包括多文件扩展名,sh,Sh,myScript.sh: grep --color -rn --include=*."$1" "$2" "$3" 命令: ./myScript.sh java keyword . # it works! ./myScript.sh java,xml keyword . # it doesn't.. ./myScript.sh {java,xml} keyword . # it doesn't.. ./myScript.sh "{java
grep --color -rn --include=*."$1" "$2" "$3"
命令:
./myScript.sh java keyword . # it works!
./myScript.sh java,xml keyword . # it doesn't..
./myScript.sh {java,xml} keyword . # it doesn't..
./myScript.sh "{java,xml}" keyword . # it doesn't..
./myScript.sh '{java,xml}' keyword . # it doesn't..
grep -rn --include=*.{java,xml} keyword . # of course it works
我怎么指挥?
或者如何编辑myScript使其能够工作?在您的示例中,
{java,xml}
参数在到达脚本之前通过shell进入两个参数java xml
(这使得您的$1
仅为java
,并将参数编号弄乱为$2
为xml
,$3
为关键字
)
在我匆忙且未经测试的第一次尝试回答时,我忘记了一个关键点:大括号扩展先于变量扩展,所以当变量$1
被替换时,大括号就不会再出现了
我找到的唯一方法就是使用eval
:
eval grep --color -rn --include=*."$1" "$2" "$3"
并称之为
./myScript.sh '{java,xml}' keyword .
或者,简化一点
eval grep --color -rn --include=*."{$1}" "$2" "$3"
打电话给
./myScript.sh java,xml keyword .
感谢您的善意解释,但是
/myScript.sh'{java,xml}'关键字。
不起作用。结果与“{java,xml}”相同。
非常有用!但我需要研究大括号扩展和var扩展。