关于$@
,"$@"
,$*
,"$*"
区别
测试代码
#!/bin/bash
for key in "$@"
do
echo '"$@"' $key
done
for key in $@
do
echo '$@' $key
done
for key in "$*"
do
echo '"$*"' $key
done
for key in $*
do
echo '$*' $key
done
测试用例一
./test.sh java c python "golang c++"
![](http://upload-images.jianshu.io/upload_images/1864395-8cb1f523e5650556.png)
测试用例一
测试用例二
./test.sh java c python golang c++
![](http://upload-images.jianshu.io/upload_images/1864395-1a687cc6da0a2e67.png)
测试用例二
总结:
$@
会忽略传入参数里面的"
,并且会以以IFS(默认为空格)来划分字段
"$@"
会把引号内容当成一个字段,忽略引号内部的IFS
$*
和$@
不管有没有引号是一样的
"$*"
把所有的命令行参数当做一个字符串
有疑问加站长微信联系(非本文作者)
![](https://static.golangjob.cn/static/img/footer.png?imageView2/2/w/280)