zoukankan      html  css  js  c++  java
  • $@和$*的作用和区别

    通过命令行传参时,$@和$* 都可以接收传的多个参数,是否有区别呢?

    通过以下测试可以清晰的查看对比:

     1 #!/bin/bash
     2 
     3 
     4 function test_args()
     5 {
     6 echo "不加双引号的时候$*和$@输出对比"
     7 echo "------------$*输出------------"
     8 echo $*
     9 echo "------------$@输出-----------"
    10 echo $@
    11 echo
    12 echo
    13 echo "使用双引号的时候$*和$@输出对比"
    14 echo "------------$*输出------------"
    15 for i in "$*"
    16 do
    17    echo $i
    18 done
    19 echo "------------$@输出------------"
    20 for j in "$@"
    21 do
    22    echo $j
    23 done
    24 }
    25 
    26 
    27 function main()
    28 {
    29 if [[ $# -le 1 ]];then
    30   echo "$0 调用时候参数太少,至少需要有2个参数,否则看不出效果哦!"
    31   exit
    32 else
    33   test_args $@
    34 fi
    35 }
    36 
    37 main $@
    
    

      

    测试:

    [root@tidb61 ~]# sh 1.sh
    1.sh 调用时候参数太少,至少需要有2个参数,否则看不出效果哦!
    [root@tidb61 ~]# sh 1.sh 1
    1.sh 调用时候参数太少,至少需要有2个参数,否则看不出效果哦!
    [root@tidb61 ~]# sh 1.sh 1 2
    不加双引号的时候$*和$@输出对比
    ------------$*输出------------
    1 2
    ------------$@输出-----------
    1 2
    
    使用双引号的时候$*和$@输出对比
    ------------$*输出------------
    1 2
    ------------$@输出------------
    1
    2
    [root@tidb61 ~]# 
    

       

    结论:

    1、当不用双引号的时候$@和$*效果是一样的。

    2、当使用双引号的时候$@将传的每一个参数单独当成一个字符串,而$*将所有传的参数当成一个字符串。

      

  • 相关阅读:
    彩食鲜架构团队风采
    钉钉的sonar集成通知
    django学习,session与cookie
    flask框架
    logging日志从开始到放弃
    你这么年轻,总得做些什么吧(致那些还未定型的程序员)
    悲观锁,乐观锁
    商城中的猜你喜欢是怎么实现的
    MemCache与redis
    如何使用go打出hell word
  • 原文地址:https://www.cnblogs.com/imdba/p/13323657.html
Copyright © 2011-2022 走看看