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
    所有的参数被认为是各个独立的单词

  • 相关阅读:
    javascript中的对象创建与继承
    Requirejs快速使用
    HTML5服务器推送事件
    使用html+css实现三角标示符号
    thinkphp结合bootstrap打造个性化分页
    angularjs学习笔记3-directive中scope的绑定修饰符
    angularjs学习笔记2—运行phonecat项目
    grunt-contrib-qunit安装过程中phantomjs安装报错问题解决
    angularjs学习笔记1-angular总体简介及其特点
    Mybatis详细配置过程
  • 原文地址:https://www.cnblogs.com/flintlovesam/p/6676993.html
Copyright © 2011-2022 走看看