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
所有的参数被认为是各个独立的单词
随机推荐
- 打包一个Docker镜像,让你的好友加载开启一个容器,并且每隔一秒输出hello,world到指定的文件中
一.两个脚本代码 Dockerfile FROM bash COPY . /usr/herui/ WORKDIR /usr/herui/ CMD [ "sh", "hel ...
- 集合栈计算机 (The SetStack Computer,ACM/ICPC NWERC 2006,UVa12096
题目描述: #include<iostream> #include<string> #include<set> #include<map> #inclu ...
- kosaraju求强连通分量
在了解kosaraju算法之前我们先了解一下什么是强连通分量,在有向图中如果两个定点vi,ui存在一条路劲从vi到达ui且也存在一条路劲从ui到达vi那么由ui和vi这两个点构成的图成为强连通图,简洁 ...
- Period :KMP
I - Period Problem Description For each prefix of a given string S with N characters (each character ...
- Linux内核设计笔记10——内核同步
Linux内核同步笔记 几个基本概念 - 临界区(critical region):访问和操作共享数据的代码段: - 原子操作:操作在执行中不被打断,要么不执行,要么执行完: - 竞争条件: 两个线程 ...
- Python3 小工具-ARP欺骗
在kali中使用 from scapy.all import * import optparse import os def send(pkt,interface): for p in pkt: se ...
- Thunder团队第二周 - Scrum会议6
Scrum会议6 小组名称:Thunder 项目名称:爱阅app Scrum Master:宋雨 工作照片: 邹双黛同学在拍照,所以不再照片中. 参会成员: 王航:http://www.cnblogs ...
- Spark GraphX 2
顶点:VertexRDD 边:EdgeRDD.Edge.EdgeDirection Triplet:EdgeTriplet 存储:PartitionStrategy 通常的存储方式有两种: ...
- OpenGL ES 2.0 -- 制作 3D 彩色旋转三角形 - 顶点着色器 片元着色器 使用详解
最近开始关注OpenGL ES 2.0 这是真正意义上的理解的第一个3D程序 , 从零开始学习 . 案例下载地址 : http://download.csdn.net/detail/han120201 ...
- TCP系列27—窗口管理&流控—1、概述
在前面的内容中我们依次介绍了TCP的连接建立和终止过程和TCP的各种重传方式.接着我们在这部分首先关注交互式应用TCP连接相关内容如延迟ACK.Nagle算法.Cork算法等,接着我们引入流控机制(f ...