set 和eval的用法比较特殊,后期课程慢慢的给大家渗透,现在是学习的刚刚开始啊。
先给大家一个例子:
[root@oldboy ~]# set -- "I am" handsome oldboy. #==>传入三个参数
[root@oldboy ~]#
[root@oldboy ~]# echo $# #==>现在有三个参数
3
[root@oldboy ~]# for i in $*;do echo $i;done #==>循环打印这些参数,用$*,无引号
I
am
handsome
oldboy.
[root@oldboy ~]# for i in $@;do echo $i;done #==>在没有双引号的情况下,这里的结果$*和$@是一样的
I
am
handsome
oldboy.
[root@oldboy ~]# for i;do echo $i;done #==>去掉in变量列表,去掉in变量列表,相当于in "$@"
I am
handsome
oldboy.
[root@oldboy ~]# for i in "$@";do echo $i;done #==>在有双引号情况下,引号内容当做一个参数输出了
I am
handsome
oldboy.
[root@oldboy ~]# for i in "$*";do echo $i;done #==>整个当成一个参数
I am handsome oldboy.
[root@oldboy ~]# shift #==>去掉第一个参数
[root@oldboy ~]# echo $#==>去掉第一个参数
[root@oldboy ~]# 2