shell 多个引号冲突_shell中`$@`和`$*`的区别

92bc9b3ee87439c939ba4e0793e37ac9.png

一、$@ 和 $* 介绍

在shell中,$* 表示把所有的参数看成一个整体,而$@ 表示把每个参数区分对待

二、$@ 和 $*案例比较

$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n的形式输出所有参数。

  1. 编写脚本
#!/bin/bash

for i in $*
do
      echo "wo shi $i "
done

for j in $@
do      
        echo "wo shi $j"
done

2. 进行测试

[laozheng@linux2 bin]$ ./for.sh 1 2 3 4
wo shi 1 
wo shi 2 
wo shi 3 
wo shi 4 
wo shi 1
wo shi 2
wo shi 3
wo shi 4

54c468631d48d9736fd901a96466e983.png

我们可以发现不管是$*,还是$@,实际上都打印了4遍

但是当它们被双引号“”包含时,“$*”会将所有的参数作为一个整体,以“$1 $2 …$n”的形式输出所有参数;“$@”会将各个参数分开,以“$1” “$2”…”$n”的形式输出所有参数

  1. 编写脚本
#!/bin/bash

for i in "$*"
do
      echo "wo shi $i "
done

for j in "$@"
do      
        echo "wo shi $j"
done

2. 进行测试

[laozheng@linux2 bin]$ ./for.sh 1 2 3 4
wo shi 1 2 3 4 
wo shi 1
wo shi 2
wo shi 3
wo shi 4

72c2cd0d8f576ffcd114750126971105.png

我们可以清楚的发现"$*"将1 2 3 4作为一个整体返回,而"$@"则是将输入参数作为多个个体返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值