`
dylan.wu
  • 浏览: 136018 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

shell中$*和$@的区别

 
阅读更多

如果想用一个shell脚本把输入参数完整的传给另一个脚本,特别遇到以下这种情况的时候./a.sh 'test 1' 'test 2'。此时就需要使用$@,而不是$*来完成需求。具体运行一下以下脚本就清楚这两条命令之间的区别了。

b.sh

echo pn:$#
echo p: $*
echo p: $@

 a.sh

echo $#
echo './b.sh $*'
./b.sh $*
echo './b.sh $@'
./b.sh $@
echo './b.sh "$*"'
./b.sh "$*"
echo './b.sh "$@"'
./b.sh "$@"
 

运行./a.sh 'a b' c d

输出结果为

3
./b.sh $*
pn:4
p: a b c d
p: a b c d
./b.sh $@
pn:4
p: a b c d
p: a b c d
./b.sh "$*"
pn:1
p: a b c d
p: a b c d
./b.sh "$@"
pn:3
p: a b c d
p: a b c d

 

分享到:
评论

相关推荐

    Shell十三问 绝对经典 本人自测

    `$@`和`$*`都表示位置参数,但`$@`在双引号中会保留每个参数的独立性,而`$*`会合并成一个字符串。 11. **&&与||的区别** `&&`代表逻辑与,前一个命令成功时才执行后一个;`||`代表逻辑或,前一个命令失败时才...

    浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释

    #### $* 和 $@ - **$*:** 当整个参数列表被视为一个单一的字符串时使用。如果参数中包含空格,则需要用引号括起来。 - **$@:** 当需要将每个参数视为独立的字符串时使用。即使参数中有空格,也会保持原样。 这两个...

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

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

    Linux Shell 脚本攻略

    - **$@ 和 $***:两者都代表所有参数,但使用双引号时有区别,$@会保留每个参数的独立性。 4. **流程控制** - **条件语句**:if-else、case结构用于根据条件执行不同代码块。 - **循环语句**:for、while、until...

    shell十三问

    $@和$*都代表命令行参数,但在双引号中,$@会按每个参数分别处理,$*则会将所有参数视为一个字符串。 十、&&与||的差异 &&表示逻辑与,前一个命令成功后才会执行下一个命令;||表示逻辑或,前一个命令失败后才会...

    Shell十三问-ChinaUnix精华贴整理

    `$@`和`$*`都用于传递命令行参数,但在双引号中,`$@`会以每个参数为一个元素,`$*`则将所有参数视为一个字符串。 11. **&&与||的区别** `&&`和`||`是逻辑操作符。`&&`表示条件语句,前一个命令成功后才执行下一...

    B shell与 C shell的区别

    B shell和C shell都是Linux操作系统中的shell类型,它们之间存在一些关键的区别。 首先,让我们从B shell开始。B shell,全称为Bourne shell,是UNIX最初使用的shell。它在每种UNIX上都可以使用,并且在shell编程...

    4种shell的区别

    本文将详细探讨四种常见的Shell——C Shell (csh)、TC Shell (tcsh)、Bourne Shell (sh) 和 Bash Shell (bash) 的区别。 #### C Shell (csh) - **特点**:C Shell是最早期的一种Shell,其设计灵感来源于C语言。它...

    Shell开发教程.docx

    - `$*` 和 `$@`:所有参数列表。 - `$$`:当前进程ID。 - `$?`:前一个命令的退出状态码。 **命令行参数处理**: - 使用`$1`, `$2`, … 来引用传递给脚本的参数。 #### 8. Shell替换:Shell变量替换,命令替换,...

    Shell编程大全 高清PDF版

    - Shell命令行参数:学习如何处理命令行输入的参数,以及特殊字符如$@、$*的区别。 - 输入/输出重定向:掌握如何将命令的输出重定向到文件,或者从文件读取输入。 2. **Shell语法** - 条件表达式与测试命令:...

    13_questions_of_shell, shell十三问--shell教程(markdown 版本).zip

    Shell还有预定义变量,如`$0`表示脚本名,`$#`表示参数数量,`$*`和`$@`表示所有参数。 6. **条件语句和循环结构** `if`语句用于条件判断,如`if [ condition ]; then ... fi`。`for`、`while`和`until`循环用于...

    shell脚本与Makefile区别.docx

    本文将详细介绍 shell 脚本和 Makefile 的区别。 首先,shell 脚本和 Makefile 都有自己独立的通配符,不能互用。shell 脚本中的通配符是 *,表示所有的字符,而 Makefile 中的通配符是 %,表示所有的字符。 其次...

    Linux的Shell命令详解

    4. **$@ 和 $***: 都表示所有位置参数的列表。它们的区别在于当参数包含空格或其他特殊字符时的行为不同。使用双引号(`"$@"`)时,每个参数被视为独立的单元,即使其中包含空格也不会被合并;而`"$*"`则会将连续的...

    shell常用命令

    - **5.3** `$@` 和 `$*` 的区别: - `$@`:每个位置参数都被视为独立的。 - `$*`:所有位置参数作为一个整体传递。 #### 六、Shell 算术运算符 - **6.1** 基本算术运算符包括:`+`, `-`, `*`, `/`, `%` 等。 - *...

    shell编程13问

    - **$@与$***:它们在脚本中用于处理位置参数,$@代表所有位置参数的列表,而$*将所有位置参数视为一个单一的字符串。 - **逻辑运算符&&与||**:用于Shell中的命令组合,&&表示前一个命令执行成功才执行后一个命令...

    shell 13问 简体中文版.pdf

    - **Bourne-Again Shell (bash)**:当前Linux系统中最常用的Shell,具有更丰富的功能和更好的兼容性。 - **C Shell (csh)**:另一种流行的Shell,提供了不同于Bourne Shell的特性。 - **T C Shell (tcsh)**:C Shell...

    shell编程从入门到精通

    Shell编程是Linux和Unix系统中不可或缺的一部分,它是一种命令行解释器,同时也是脚本编程语言。通过Shell,用户可以高效地与操作系统交互,自动化日常任务,实现系统管理、数据处理和网络控制等功能。本教程“Shell...

    linux shell script tutorial_v2_r5.pdf

    - 单引号、双引号和无引号的区别,以及它们对变量的影响。 **3.7 export声明** - 将局部变量变为全局变量,使其在子进程间共享。 **3.8 清除变量** - 使用`unset`命令删除变量。 **3.9 用户输入获取** - 通过...

    shell 十三问

    `$@`与 `$*` 的区别 - **`$@`**:当作为单独参数传递给脚本或函数时,每个参数都会保持独立。 - **`$*`**:所有参数作为一个整体传递,中间由空格分隔。 #### 10. `&&`与 `||` 的区别 - **`&&`**:逻辑与操作符...

Global site tag (gtag.js) - Google Analytics