Shell $*和$@的区别
发布时间:2020-12-14 02:16:19 所属栏目:Linux 来源:网络整理
导读:$* 和 $@ 都表示传递给函数或脚本的所有参数,我们已在《Shell特殊变量》一节中进行了演示,本节重点说一下它们之间的区别。 当 $* 和 $@?不被双引号 " " 包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。 但是当
$* 和 $@ 都表示传递给函数或脚本的所有参数,我们已在《Shell特殊变量》一节中进行了演示,本节重点说一下它们之间的区别。 当 $* 和 $@?不被双引号 " " 包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。但是当它们被双引号 " " 包含时,就会有区别了:
比如传递了 5 个参数,那么对于 "$*" 来说,这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;而对于"$@" 来说,这 5 个参数是相互独立的,它们是 5 份数据。如果使用 echo 直接输出 "$*" 和"$@" 做对比,是看不出区别的;但如果使用 for 循环来逐个输出数据,立即就能看出区别来。
关于 for 循环的用法请猛击:Shell for循环和for int循环详解编写下面的代码,并保存为 test.sh: #!/bin/bash echo "print each param from "$*"" for var in "$*" do echo "$var" done echo "print each param from "$@"" for var in "$@" do echo "$var" done运行 test.sh,并附带参数:
[mozhiyan@localhost demo]$ . ./test.sh a b c d "$*" ,只循环了 1 次,因为它只有 1 分数据;对于"$@" ,循环了 5 次,因为它有 5 份数据。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |