如果想用一个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
分享到:
相关推荐
`$@`和`$*`都表示位置参数,但`$@`在双引号中会保留每个参数的独立性,而`$*`会合并成一个字符串。 11. **&&与||的区别** `&&`代表逻辑与,前一个命令成功时才执行后一个;`||`代表逻辑或,前一个命令失败时才...
#### $* 和 $@ - **$*:** 当整个参数列表被视为一个单一的字符串时使用。如果参数中包含空格,则需要用引号括起来。 - **$@:** 当需要将每个参数视为独立的字符串时使用。即使参数中有空格,也会保持原样。 这两个...
进程状态变量 1、$$获取当前shell的进程号(PID) 2、$!执行上一个指令的PID 3、$?...$*和$@的区别 $*将所有的参数视为单个字符串,相当于“$1$2$3” $@将每个参数视为单个的字符串,保留命令行中的任
- **$@ 和 $***:两者都代表所有参数,但使用双引号时有区别,$@会保留每个参数的独立性。 4. **流程控制** - **条件语句**:if-else、case结构用于根据条件执行不同代码块。 - **循环语句**:for、while、until...
$@和$*都代表命令行参数,但在双引号中,$@会按每个参数分别处理,$*则会将所有参数视为一个字符串。 十、&&与||的差异 &&表示逻辑与,前一个命令成功后才会执行下一个命令;||表示逻辑或,前一个命令失败后才会...
`$@`和`$*`都用于传递命令行参数,但在双引号中,`$@`会以每个参数为一个元素,`$*`则将所有参数视为一个字符串。 11. **&&与||的区别** `&&`和`||`是逻辑操作符。`&&`表示条件语句,前一个命令成功后才执行下一...
B shell和C shell都是Linux操作系统中的shell类型,它们之间存在一些关键的区别。 首先,让我们从B shell开始。B shell,全称为Bourne shell,是UNIX最初使用的shell。它在每种UNIX上都可以使用,并且在shell编程...
本文将详细探讨四种常见的Shell——C Shell (csh)、TC Shell (tcsh)、Bourne Shell (sh) 和 Bash Shell (bash) 的区别。 #### C Shell (csh) - **特点**:C Shell是最早期的一种Shell,其设计灵感来源于C语言。它...
- `$*` 和 `$@`:所有参数列表。 - `$$`:当前进程ID。 - `$?`:前一个命令的退出状态码。 **命令行参数处理**: - 使用`$1`, `$2`, … 来引用传递给脚本的参数。 #### 8. Shell替换:Shell变量替换,命令替换,...
- Shell命令行参数:学习如何处理命令行输入的参数,以及特殊字符如$@、$*的区别。 - 输入/输出重定向:掌握如何将命令的输出重定向到文件,或者从文件读取输入。 2. **Shell语法** - 条件表达式与测试命令:...
Shell还有预定义变量,如`$0`表示脚本名,`$#`表示参数数量,`$*`和`$@`表示所有参数。 6. **条件语句和循环结构** `if`语句用于条件判断,如`if [ condition ]; then ... fi`。`for`、`while`和`until`循环用于...
本文将详细介绍 shell 脚本和 Makefile 的区别。 首先,shell 脚本和 Makefile 都有自己独立的通配符,不能互用。shell 脚本中的通配符是 *,表示所有的字符,而 Makefile 中的通配符是 %,表示所有的字符。 其次...
4. **$@ 和 $***: 都表示所有位置参数的列表。它们的区别在于当参数包含空格或其他特殊字符时的行为不同。使用双引号(`"$@"`)时,每个参数被视为独立的单元,即使其中包含空格也不会被合并;而`"$*"`则会将连续的...
- **5.3** `$@` 和 `$*` 的区别: - `$@`:每个位置参数都被视为独立的。 - `$*`:所有位置参数作为一个整体传递。 #### 六、Shell 算术运算符 - **6.1** 基本算术运算符包括:`+`, `-`, `*`, `/`, `%` 等。 - *...
- **$@与$***:它们在脚本中用于处理位置参数,$@代表所有位置参数的列表,而$*将所有位置参数视为一个单一的字符串。 - **逻辑运算符&&与||**:用于Shell中的命令组合,&&表示前一个命令执行成功才执行后一个命令...
- **Bourne-Again Shell (bash)**:当前Linux系统中最常用的Shell,具有更丰富的功能和更好的兼容性。 - **C Shell (csh)**:另一种流行的Shell,提供了不同于Bourne Shell的特性。 - **T C Shell (tcsh)**:C Shell...
Shell编程是Linux和Unix系统中不可或缺的一部分,它是一种命令行解释器,同时也是脚本编程语言。通过Shell,用户可以高效地与操作系统交互,自动化日常任务,实现系统管理、数据处理和网络控制等功能。本教程“Shell...
- 单引号、双引号和无引号的区别,以及它们对变量的影响。 **3.7 export声明** - 将局部变量变为全局变量,使其在子进程间共享。 **3.8 清除变量** - 使用`unset`命令删除变量。 **3.9 用户输入获取** - 通过...
`$@`与 `$*` 的区别 - **`$@`**:当作为单独参数传递给脚本或函数时,每个参数都会保持独立。 - **`$*`**:所有参数作为一个整体传递,中间由空格分隔。 #### 10. `&&`与 `||` 的区别 - **`&&`**:逻辑与操作符...