shell中$@和$*的区别

来源:互联网 发布:试客系统整站源码 编辑:程序博客网 时间:2024/04/30 02:55

$*

所有的位置参数,被作为一个单词.
注意:“$*”必须被”“引用.

$@

,,,.,.:@”必须被引用.

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

#!/usr/bin/env bash:<<EOF运行结果如下:root@kali:~/.pyenv# /bin/bash asterisk_and_at.sh  1 2 3 4 5 "hello world"Listing args with "$*": Arg #1=1 2 3 4 5 hello world所有的参数均认为是一个Listing args with no double quoto $\*(没有被引用)Arg #1=1Arg #2=2Arg #3=3Arg #4=4Arg #5=5Arg #6=helloArg #7=world所有的参数被认为是各个独立的单词Listing args with "$\@": Arg #1=1Arg #2=2Arg #3=3Arg #4=4Arg #5=5Arg #6=hello worldListing args with $\@(没有被引用): Arg #1=1Arg #2=2Arg #3=3Arg #4=4Arg #5=5Arg #6=helloArg #7=worldEOFset -e#set -xindex=1echo "Listing args with \"\$*\": "for arg in "$*"; do    echo "Arg #$index=$arg"    let index+=1doneecho -e "所有的参数均认为是一个\n"index=1echo "Listing args with no double quoto \$\*(没有被引用)"for arg in $*; do    echo "Arg #$index=$arg"    let index+=1doneecho -e "所有的参数被认为是各个独立的单词\n"index=1echo -e "Listing args with \"\$\@\": "for arg in "$@"; do    echo "Arg #$index=$arg"    let index+=1doneecho index=1echo "Listing args with \$\@(没有被引用): "for arg in $@; do    echo "Arg #$index=$arg"    let index+=1doneecho exit 0

参考:http://blog.csdn.net/zhejiang9/article/details/7887569

0 0
原创粉丝点击