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
所有的参数被认为是各个独立的单词
随机推荐
- 搭建hexo博客并部署到github上
hexo是由Node.js驱动的一款快速.简单且功能强大的博客框架,支持多线程,数百篇文章只需几秒即可生成.支持markdown编写文章,可以方便的生成静态网页托管在github上. 感觉不错. 前端 ...
- lintcode 平面列表
问题描述: 给定一个列表,该列表中的每个要素要么是个列表,要么是整数.将其变成一个只包含整数的简单列表. 样例: 给定 [1,2,[1,2]],返回 [1,2,1,2]. 给定 [4,[3,[2,[1 ...
- POJ 3845 Fractal(计算几何の旋转缩放)
Description Fractals are really cool mathematical objects. They have a lot of interesting properties ...
- Python 服务器端表单验证插件
Python格式验证库 Cerberus 作者 MrStranger 关注 2016.08.02 14:44 字数 2140 阅读 79评论 0喜欢 1 Cerberus是一个验证Python对象.M ...
- Java 变量和输入输出
一些重要知识 一个源文件里只能有一个public类,其它类数量不限.文件名与public类名相同 JAVA程序严格区分大小写 JAVA应用程序的执行入口是main方法固定写法:public stati ...
- Mininet实验 MAC地址学习分析
拓扑图 学习过程分析 首先交换机A和交换机B一开始的MAC地址表都是空的. 此时主机11向主机33发送一个数据帧. 数据帧会先到达交换机A,交换机A会获得主机11的MAC地址和端口号.(此时交换机A的 ...
- UVALive - 6864 Strange Antennas 扫描线
题目链接: http://acm.hust.edu.cn/vjudge/problem/87213 Strange Antennas Time Limit: 3000MS 题意 一个雷达能够辐射到的范 ...
- iOS开发CABasicAnimation动画理解
1.CALayer简介 CALayer是个与UIView很类似的概念,同样有backgroundColor.frame等相似的属性,我们可以将UIView看做一种特殊的CALayer.但实际上UIVi ...
- C# HttpWebRequest post提交数据,提交对象
1.客户端方法 //属于客户端 //要向URL Post的方法 public void PostResponse() { HttpWebRequest req = (HttpWebRequest)Ht ...
- 【.NET】- async await 异步编程
为什么需要异步,异步对可能起阻止作用的活动(例如,应用程序访问 Web 时)至关重要. 对 Web 资源的访问有时很慢或会延迟. 如果此类活动在同步过程中受阻,则整个应用程序必须等待. 在异步过程中, ...