$@和$*的作用和区别
Posted Locutus
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了$@和$*的作用和区别相关的知识,希望对你有一定的参考价值。
脚本
通过命令行传参时,$@
和$*
都可以接收多个参数,是否有区别呢?
#!/bin/bash
function test_args()
echo "不加双引号的时候\\$*和\\$@输出对比"
echo "------------\\$*输出------------"
echo $*
echo "------------\\$@输出-----------"
echo $@
echo
echo
echo "使用双引号的时候\\$*和\\$@输出对比"
echo "------------\\$*输出------------"
for i in "$*"
do
echo $i
done
echo "------------\\$@输出------------"
for j in "$@"
do
echo $j
done
function main()
if [[ $# -le 1 ]];then
echo "$0 调用时候参数太少,至少需要有2个参数,否则看不出效果哦!"
exit
else
test_args $@
fi
main $@
测试
# sh 1.sh
1.sh 调用时候参数太少,至少需要有2个参数,否则看不出效果哦!
# sh 1.sh 1
1.sh 调用时候参数太少,至少需要有2个参数,否则看不出效果哦!
不加双引号的时候, ∗ 和 *和 ∗和@输出对比
# sh 1.sh 1 2
------------$*输出------------
1 2
------------$@输出-----------
1 2
使用双引号的时候," ∗ " 和 " *"和" ∗"和"@"输出对比
------------"$*"输出------------
1 2
------------"$@"输出------------
1
2
结论
- 当不用双引号的时候, @ 和 @和 @和*效果是一样的
- 当使用双引号的时候,
$@
将传的每一个参数单独当成一个字符串,而$*
将所有传入的参数当成一个字符串
以上是关于$@和$*的作用和区别的主要内容,如果未能解决你的问题,请参考以下文章