在linux下shell脚本的使用,能有效提交效率?准确理解$* vs $@在不同场景表示含义

$*与$@的区别

  • $* 当做整体
  • $@ 宏观整体,微观单体

1.不加引号,空格为分隔符,结果都一致

[root@mvpbang ~]# for i in $*;do echo $i;done  #不加引号,默认空格为分隔符
are
you
ok
haha
!

[root@mvpbang ~]# for i in $@;do echo $i;done
are
you
ok
haha
!

2.加上引号,"$*" 代表一个整体值,"$@" 以整体,输出每个值

[root@mvpbang ~]# for i in  "$*";do echo $i; done  #看做一个值 "$1$2..."
are you ok haha !

[root@mvpbang ~]# for i in "$@"; do echo $i; done  #依次输出每个参数的值
are you ok
haha
!

[root@mvpbang ~]# for i ;do echo $i; done         #for i  == for i in "$@"
are you ok
haha
!