`
younglibin
  • 浏览: 1195969 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

shell中$*与$@的区别

 
阅读更多
 

$*
所有的位置参数,被作为一个单词.
$@
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.

 

$@ 和 $* 只在被双引号包起来的时候才会有差异
双引号括起来的情况:
$*将所有的参数认为是一个字段
$@ 以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。

 

下边给个例子看一下:

一、$*  不添加 “” 

[webadmin@www testfor]$ vi  printFile
  1 #!/bin/bash
  2 
  3 var=(1 2 3 4)
  4 for fi in ${var[*]}; do
  5   echo "-----"  
  6   echo $fi
  7 done

结果:
[webadmin@www testfor]$ ./printFile 
-----
1
-----
2
-----
3
-----
4

、$@  不添加 “” 

[webadmin@www testfor]$ vi  printFile
  1 #!/bin/bash
  2 
  3 var=(1 2 3 4)
  4 for fi in ${var[@]}; do
  5   echo "-----"  
  6   echo $fi
  7 done

结果:
[webadmin@www testfor]$ ./printFile 
-----
1
-----
2
-----
3
-----
4

 三、$*添加双引号

[webadmin@www testfor]$ vi  printFile
  1 #!/bin/bash
  2 
  3 var=(1 2 3 4)
  4 for fi in "${var[*]}"; do
  5   echo "-----"  
  6   echo $fi
  7 done

结果:
[webadmin@www testfor]$ ./printFile 
-----
1 2 3 4

将所有的参数解析为 一个参数

 四、$@  添加双引号

 

[webadmin@www testfor]$ vi  printFile
  1 #!/bin/bash
  2 
  3 var=(1 2 3 4)
  4 for fi in "${var[@]}"; do
  5   echo "-----"  
  6   echo $fi
  7 done

结果:

[webadmin@www testfor]$ ./printFile 
-----
1
-----
2
-----
3
-----
4

和  $*  , $@没有加上引号的结果一直

 

五、数据修改:

[webadmin@www testfor]$ vi  printFile
  1 #!/bin/bash
  2 
  3 var=(1 "2 3" 4)
  4 for fi in "${var[@]}"; do
  5   echo "-----"  
  6   echo $fi
  7 done

结果:
[webadmin@www testfor]$ ./printFile 
-----
1
-----
2 3
-----
4

将数组中 的 2和3 印在括号内 , 经过$@会解析为一个 字符串参数

 

 

综上可以看到 , 我们实际使用中还是使用$@  是最好的选择

 

 

 

[webadmin@www testfor]$ vi  printFile
  1 #!/bin/bash
  2 
  3 var=(1 "2 3" 4)
  4 for fi in  /yazuo_apps/test/ch02/*; do
  5   echo "-----"  
  6   echo $fi
  7 done

 

分享到:
评论

相关推荐

    Shell编程中的特殊变量之进程状态变量介绍

    进程状态变量 1、$$获取当前shell的进程号(PID) 2、$!执行上一个指令的PID 3、$?...$*和$@的区别 $*将所有的参数视为单个字符串,相当于“$1$2$3” $@将每个参数视为单个的字符串,保留命令行中的任

    运维技能、基础【汇总】1

    第一章 脚本编程与 Linux 命令Shell 脚本基础知识$1 入参,空值时默认赋值技巧$* 和 $@ 区别$* 和 $@ 都表示传递给函数或脚本的所有参数,

    B shell与 C shell的区别

    B shell与 C shell的区别 ; B shell的详解和C shell 的详解

    Linux Shell 如何获取参数的方法

    $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 区别:$@, $* 相同点:都是引用所有...

    Shell基础知识点(7)—特殊变量

    6. $* 和 $@的区别 当 $* 和 $@ 被双引号(” “)包含时, “$*”会将所有的参数作为一个整体,以“$1 $2 … $n”的形式输出所有的参数。 “$@”会以各个参数分开,以“$1”, “2”,…”2″ , …”2″,…”n”的...

    蔡氏电路matlab仿真代码-bash_interview_questions:bashshell面试问题

    matlab仿真代码BASH SHELL面试问题 [[ :up_arrow: ]] Shell脚本 编写一个脚本,打印出自己的绝对路径 编写一个脚本,打印出自己的内容 ...将$@和$*与"$@"和"$*"区别开。 区分exit 0和exit 1 。 {}和()有

    shell脚本与Makefile区别.docx

    shell脚本与Makefile区别.docx

    解决ssh远程登陆linux显示-bash-4.1$的问题

    cp -pr /etc/skel/.bash* /home/test/ ... 您可能感兴趣的文章:浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释php $_SERVER windows系统与linux系统下的区别说明linux让$变成#符号的实操方法linux中$符号的基础用法教程

    Shell脚本中单引号(‘)和双引号(“)的使用区别

    在Linux操作系统上编写Shell脚本时候,我们是在变量的前面使用$符号来获取该变量的值,通常在脚本中使用”$param”这种带双引号的格式,但也有出现使用’$param’这种带引号的使用的场景,首先大家看一段例子: ...

    4种shell的区别

    linux下常见4中shell脚本的区别

    java调用shell脚本执行sqlldr与存储过程

    在java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程。 linux环境中有2个dba的用户:oracle、erm 还有1个web用户:erm 在linux环境中,这三个用户都可以直接在任意目录下执行该shell...

    Shell编程中while与for的区别及用法详解

    在shell编程中经常用到循环,常用的循环有for和while循环两种。while循环默认以行读取文件,而for循环以空格读取文件切分文件,本篇就结合现网的一些使用示例说说二者的用法和区别。 一、常用语法 1、for循环 for...

    Linux网络操作系统基础:shell编程基础.pptx

    Shell 中的字符;变量;变量的类型;使用变量;扩展变量;变量的赋值与输出;Shell 的算术扩展;在 Shell 中计算时间;算术运算常用表达式;算术运算的优先级;变量递增的前置后置区别;熟悉 Shell 基础知识 掌握 Shell 脚本的...

    Linux下各种shell区别

    ksh bash csh的区别,编写shell脚本需要注意的事项

    老男孩Linux shell 高级编程

    如shell编程需要的基础知识储备、shell脚本概念介绍及第一个脚本案例、shell脚本基础知识-作用地位-比其他语言优势、建立一个规范的shell脚本、执行shell脚本的多种方法及重要区别精讲、shell脚本开发的9点基本规范...

    android adb shell 命令大全

    android adb shell 命令大全 1. 显示系统中全部Android平台: android list targets 2. 显示系统中全部AVD(模拟器): android list avd 3. 创建AVD(模拟器): android create avd --name 名称 --...

    shell常用命令整理

    在计算机科学中,Shell俗称壳(用来区别于核),是指“提供使用者使用界面”的软件(命令解析器)。它类似于DOS下的command和后来的cmd.exe。它接收用户命令,然后调用相应的应用程序。基本上shell分两大类: 一:...

    Shell中四种执行脚本方式的对比

    # test7:用于对比各种脚本程序执行方式的区别 echo The variable var1 is $var1 echo The environment variable env1 is $env1 echo The current shell PID is $$ 1. 使用绝对路径执行脚本 测试过程 root@Dell-Tom...

    Linux常见面试题,应对面试分享

    **软连接与硬链接的区别** **怎么查看文件** **IOS七层模型** **三次握手与四次挥手** **lvm 逻辑卷创建过程** **磁盘配额** **raid 磁盘阵列** **文本三剑客** **防火墙iptables与fireward** **Linux系统...

    csh,tcsh,bash,sh等shell的区别

    主要介绍了linux下csh, tcsh,bash, sh等shell的区别?,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics