zoukankan      html  css  js  c++  java
  • 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
    所有的参数被认为是各个独立的单词

  • 相关阅读:
    帧间编码的预测自适应量化系数扫描排序
    调试vp8编码和解码程序
    WPF学习——制作一个简单的录入界面(2):用C#编程实现所有控件的功能
    自适应变异引用(AWR)方法(an adaptive warped reference (AWR) method )
    vp8编解码调试(环境vs2005)
    加油
    开始工作blog了
    vs2010编译vp8
    WPF学习——制作一个简单的录入界面(1): 添加需要的控件
    JPEG编码
  • 原文地址:https://www.cnblogs.com/flintlovesam/p/6676993.html
Copyright © 2011-2022 走看看