• shell中的$* $@


    shell中$*与$@的区别

    关于$* 和 $@的 一点 认识 同是菜鸟一起学习

    $*
    所有的位置参数,被作为一个单词.
    注意:"$*"必须被""引用.
    $@
    与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
    并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
    单词.
    注意:"$@"必须被引用.

    $@ $* 只在被双引号包起来的时候才会有差异
    双引号括起来的情况:
    $*将所有的参数认为是一个字段
    $@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test 1 "2 3" 4   来发现差异

    没有括起来的情况是$@和$*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 "2 3" 4   来发现差异

    一个小例子 ,仅供参考

    [Copy to clipboard] [ - ]CODE:#!/bin/bash
    echo

    index=1

    echo "Listing args with"$*":"
    for arg in "$*"

    do
       echo "Arg #$index=$arg"
       let "index+=1"

    done

    echo "所有的参数被认为是一个单词"

    echo

    index=1

    echo "Listing args with "$@":"
    for arg in "$@"
    do
    echo "Arg #$index=$arg"
    let "index+=1"
    done

    echo "所有的参数被认为是各个独立的单词"

    echo

    index=1

    echo "Listing args with $* (未被引用):"
    for arg in $*
    do
    echo "Arg #$index=$arg"
    let "index+=1"
    done
    echo "所有的参数被认为是各个独立的单词"

    exit 0
    运行后输出为

    [Copy to clipboard] [ - ]CODE:[root@localhost ABS]# ./test 1 2 3 4

    Listing args with"$*":
    Arg #1=1 2 3 4
    所有的参数被认为是一个单词

    Listing args with "$@":
    Arg #1=1
    Arg #2=2
    Arg #3=3
    Arg #4=4
    所有的参数被认为是各个独立的单词

    Listing args with $* (未被引用):
    Arg #1=1
    Arg #2=2
    Arg #3=3
    Arg #4=4
    所有的参数被认为是各个独立的单词

    shell中$*与$@的区别

    关于$* 和 $@的 一点 认识 同是菜鸟一起学习

    $*
    所有的位置参数,被作为一个单词.
    注意:"$*"必须被""引用.
    $@
    与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
    并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
    单词.
    注意:"$@"必须被引用.

    $@ $* 只在被双引号包起来的时候才会有差异
    双引号括起来的情况:
    $*将所有的参数认为是一个字段
    $@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。采用LS的脚本运行./test 1 "2 3" 4   来发现差异

    没有括起来的情况是$@和$*一样的,见到IFS就划分字段。还是采用LS的脚本运行./test 1 "2 3" 4   来发现差异

    一个小例子 ,仅供参考

    [Copy to clipboard] [ - ]CODE:#!/bin/bash
    echo

    index=1

    echo "Listing args with"$*":"
    for arg in "$*"

    do
       echo "Arg #$index=$arg"
       let "index+=1"

    done

    echo "所有的参数被认为是一个单词"

    echo

    index=1

    echo "Listing args with "$@":"
    for arg in "$@"
    do
    echo "Arg #$index=$arg"
    let "index+=1"
    done

    echo "所有的参数被认为是各个独立的单词"

    echo

    index=1

    echo "Listing args with $* (未被引用):"
    for arg in $*
    do
    echo "Arg #$index=$arg"
    let "index+=1"
    done
    echo "所有的参数被认为是各个独立的单词"

    exit 0
    运行后输出为

    [Copy to clipboard] [ - ]CODE:[root@localhost ABS]# ./test 1 2 3 4

    Listing args with"$*":
    Arg #1=1 2 3 4
    所有的参数被认为是一个单词

    Listing args with "$@":
    Arg #1=1
    Arg #2=2
    Arg #3=3
    Arg #4=4
    所有的参数被认为是各个独立的单词

    Listing args with $* (未被引用):
    Arg #1=1
    Arg #2=2
    Arg #3=3
    Arg #4=4
    所有的参数被认为是各个独立的单词

  • 相关阅读:
    Qt 学习之路 2(84):Repeater
    MULE-ET0 、 ET1、ET2、PT1、PT2
    linux压缩和解压缩命令
    设置网卡
    打开虚拟机时显示不是有效的虚拟机配置文件是什么原因啊
    VMware设置NAT网络
    ubuntu 自动获取ip的怎么设置
    Qt 学习之路 2(84):Repeater
    Qt Quick里的图形效果:阴影(Drop Shadow)
    N皇后问题
  • 原文地址:https://www.cnblogs.com/flintlovesam/p/6676993.html
Copyright © 2020-2023  润新知