今天小编给大家分享的是shell中$的含义和以及和$@的区别,相信大部分人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,话不多说,一起往下看吧。
#!/bin/bash
#Author:Sparrow
#Name:explain_shell_parameters
#Date 2020-3-11
#Description:
#Explain what $0 $1 $2 $3 $4 $@ $* $# mean
#Program begin
#Ensure enter six parameters at least
if [ $# -le 6 ];then
echo "Please enter 6 parameters at least!"
exit 1
fi
#Echo every $
echo "\$0 --------- $0"
echo "\$1 --------- $1"
echo "\$2 --------- $2"
echo "\$3 --------- $3"
echo "\$4 --------- $4"
echo "\$5 --------- $5"
echo "\$6 --------- $6"
echo "\$7 --------- $7"
echo "\$8 --------- $8"
echo "\$# --------- $#"
echo "\$@ --------- $@"
echo "\$* --------- $*"
echo "\$? --------- $?"
sh explain_shell_parameters.sh 1 2 3 4 5 6 7 8
#结果
#$0即脚本名
$0 --------- explain_shell_parameters.sh
$1 --------- 1
$2 --------- 2
$3 --------- 3
$4 --------- 4
$5 --------- 5
$6 --------- 6
$7 --------- 7
$8 --------- 8
$# --------- 8
$@ ---------1 2 3 4 5 6 7 8
$* --------- 1 2 3 4 5 6 7 8
#上一条语句的执行结果
$? --------- 0
当 $* 和 $@ 不被双引号 " "包围时,它们之间没有任何区别,
都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。
但是当它们被双引号" "包含时,就会有区别了:
"$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
"$@"仍然将每个参数都看作一份数据,彼此之间是独立的。
比如传递了 5 个参数,那么对于"$*"来说,
这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;
而对于"$@"来说,这 5 个参数是相互独立的,
它们是 5 份数据。
如果使用 echo 直接输出"$*"和"$@"做对比,是看不出区别的;
但如果使用 for 循环来逐个输出数据,立即就能看出区别来。
关于shell中$的含义和以及和$@的区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。