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

    $* 和 $@ 都表示传递给函数或脚本的所有参数,

    当 $* 和 $@ 不被双引号" "包围时,它们之间没有任何区别,都是将接收到的每个参数看做一份数据,彼此之间以空格来分隔。

    但是当它们被双引号" "包含时,就会有区别了:
    • "$*"会将所有的参数从整体上看做一份数据,而不是把每个参数都看做一份数据。
    • "$@"仍然将每个参数都看作一份数据,彼此之间是独立的。

    比如传递了 5 个参数,那么对于"$*"来说,这 5 个参数会合并到一起形成一份数据,它们之间是无法分割的;而对于"$@"来说,这 5 个参数是相互独立的,它们是 5 份数据。

    如果使用 echo 直接输出"$*""$@"做对比,是看不出区别的;但如果使用 for 循环来逐个输出数据,立即就能看出区别来。 编写下面的代码,并保存为 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
    print each param from "$*"
    a b c d
    print each param from "$@"
    a
    b
    c
    d

    从运行结果可以发现,对于"$*",只循环了 1 次,因为它只有 1 分数据;对于"$@",循环了 5 次,因为它有 5 份数据。
     
     
  • 相关阅读:
    使用requests爬虫简单获取知乎问题信息
    slam介绍
    move_base 控制机器人(2)
    move_base 控制机器人(1)
    Linux 常用命令-touch
    Linux 常用命令-rmdir
    Linux 常用命令-rm
    Linux 常用命令-mkdir
    Linux 目录结构
    Linux 常用命令-pwd
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/14601322.html
Copyright © 2011-2022 走看看