Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
Sh 如何使用grep制作脚本--包括多文件扩展名_Sh - Fatal编程技术网

Sh 如何使用grep制作脚本--包括多文件扩展名

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

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,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扩展。