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

随机推荐

  1. js如何判断客户端是iOS还是Android等移动终端

    判断原理:JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本.JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来 ...

  2. LeetCode - 268. Missing Number - stable_sort应用实例 - ( C++ ) - 解题报告

    1.题目大意 Given an array nums, write a function to move all 0's to the end of it while maintaining the ...

  3. Eclipse安装颜色主题,个性化你的IDE,让你的IDE焕然一新

    我们都知道eclipse默认的颜色主题是白色的背景,但是如果想改变代码编辑区的背景颜色,需要怎么办呢? 今天给大家介绍一个非常赞的eclipse,可以很方便的根据自己的需求选择喜欢的颜色主题,其他的不 ...

  4. 策略模式,ASP.NET实现

    策略模式,ASP.NET实现 using System; using System.Collections.Generic; using System.Linq; using System.Web; ...

  5. encode 与 decode

    decode 将其它编码的字符串转换成unicode编码,例如:str1.decode("gb2312"),表示将gb2312编码的字符串转换成unicode编码 encode 将 ...

  6. joomla 出现The file Cache Storage is not supported on this platform;

    错误提示:The file Cache Storage is not supported on this platform:在这个平台上不支持文件缓存存储 出现这样的原因很简单,有两个文件夹不可写,这 ...

  7. iOS-【UIDynamic-UIKit动力学】

    如果看不到图片 可以尝试更换浏览器(推荐Safari ) 0.了解 •Dynamic Animator:动画者,为动力学元素提供物理学相关的能力及动画,同时为这些元素提供相关的上下文,是动力学元素与底 ...

  8. 《Debian标准教程》摘录2则

    1.克隆Debian系统 如果使用的Debian系统只有使用apt安装的软件包,可以使用下面的脚本来安装一个完全一样的新系统. #在源主机上 dpkg --get-selections > se ...

  9. 转 Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405

    转自:http://www.cnblogs.com/SilenceTom/p/6697484.html 调用接口遇到Response for preflight has invalid HTTP st ...

  10. position定位-absolute与fixed

    1. absolute 生成绝对定位元素,相对于static定位以外的第一个父元素进行定位. 2. fixed 生成绝对定位元素,相对于浏览器窗口进行定位.