$*
所有的位置参数,被作为一个单词.
$@
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.
$@ 和 $* 只在被双引号包起来的时候才会有差异
双引号括起来的情况:
$*将所有的参数认为是一个字段
$@ 以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
相关推荐
本文详细介绍了Linux Shell脚本中的几个关键特殊变量 `$#`, `$@`, `$0`, `$1`, `$2` 的含义及其应用场景,并通过具体的示例代码加深理解。熟练掌握这些变量能够帮助开发者更高效地编写Shell脚本,并确保脚本的健壮性...
cp -pr /etc/skel/.bash* /home/test/ ... 您可能感兴趣的文章:浅谈linux中shell变量$#,$@,$0,$1,$2的含义解释php $_SERVER windows系统与linux系统下的区别说明linux让$变成#符号的实操方法linux中$符号的基础用法教程
10. **$@与$*的区别** `$@`和`$*`都用于传递命令行参数,但在双引号中,`$@`会以每个参数为一个元素,`$*`则将所有参数视为一个字符串。 11. **&&与||的区别** `&&`和`||`是逻辑操作符。`&&`表示条件语句,前一个...
- **$@ 和 $***:两者都代表所有参数,但使用双引号时有区别,$@会保留每个参数的独立性。 4. **流程控制** - **条件语句**:if-else、case结构用于根据条件执行不同代码块。 - **循环语句**:for、while、until...
Shell特殊变量:Shell$0,$#,$*,$@,$?,$$和命令行参数 **特殊变量介绍**: - `$0`:脚本文件名称。 - `$#`:传入脚本的参数个数。 - `$*` 和 `$@`:所有参数列表。 - `$$`:当前进程ID。 - `$?`:前一个命令的退出...
九、$@与$*的区别 $@和$*都代表命令行参数,但在双引号中,$@会按每个参数分别处理,$*则会将所有参数视为一个字符串。 十、&&与||的差异 &&表示逻辑与,前一个命令成功后才会执行下一个命令;||表示逻辑或,前一个...
- 特殊变量如$#, $*, $@等的用途。 **4.17 创建使用消息** - 提供帮助信息或错误提示。 **4.18 Exit命令** - 结束脚本执行,可带返回码。 **4.19 Case语句** - 用于模式匹配和分支选择。 **4.20 处理大小写...
- **5.3** `$@` 和 `$*` 的区别: - `$@`:每个位置参数都被视为独立的。 - `$*`:所有位置参数作为一个整体传递。 #### 六、Shell 算术运算符 - **6.1** 基本算术运算符包括:`+`, `-`, `*`, `/`, `%` 等。 - *...
下面是两个示例来演示`$*`与`$@`的区别: ```bash #!/bin/bash number=11 if [ $# -eq 0 ];then echo "Usage: $0 + canshu" exit $number fi for i in $* # 在$*中遍历,每个参数被视为独立的,循环次数...
4. **$@ 和 $***: 都表示所有位置参数的列表。它们的区别在于当参数包含空格或其他特殊字符时的行为不同。使用双引号(`"$@"`)时,每个参数被视为独立的单元,即使其中包含空格也不会被合并;而`"$*"`则会将连续的...
`$@`与 `$*` 的区别 - **`$@`**:当作为单独参数传递给脚本或函数时,每个参数都会保持独立。 - **`$*`**:所有参数作为一个整体传递,中间由空格分隔。 #### 10. `&&`与 `||` 的区别 - **`&&`**:逻辑与操作符...
区别:$@, $* 相同点:都是引用所有参数 不同点:$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(” “)包含时,都以”$1” “$2” … “$n” 的形式输出所有参数。但是当它们被双引号(” “)包含时,”$...
### 4种Shell的区别 在Linux环境中,Shell作为用户与操作系统之间的交互界面,扮演着极其重要的角色。不同的Shell具有不同的特性和语法结构,这使得它们适用于不同场景下的需求。本文将详细探讨四种常见的Shell——...
关于`$*`和`$@`的区别,两者在未被双引号包含时表现相同,但当被双引号包含时,`$*`将所有参数视为一个整体,以单个字符串形式输出,而`$@`则保持参数的独立性,分别输出每个参数。 综上所述,Linux基础学习8的重点...
`$*`和`$@`都表示所有位置参数的列表。 #### 五、内部变量 - **Shell提供的特殊变量**:如`$?`表示最近一个命令的退出状态,`$!`表示后置命令的进程ID等。 - **使用内部变量**:内部变量用于控制脚本的行为或获取...
- Shell命令行参数:学习如何处理命令行输入的参数,以及特殊字符如$@、$*的区别。 - 输入/输出重定向:掌握如何将命令的输出重定向到文件,或者从文件读取输入。 2. **Shell语法** - 条件表达式与测试命令:...
Shell还有预定义变量,如`$0`表示脚本名,`$#`表示参数数量,`$*`和`$@`表示所有参数。 6. **条件语句和循环结构** `if`语句用于条件判断,如`if [ condition ]; then ... fi`。`for`、`while`和`until`循环用于...