Shell $*和$@之间的区别

Shell命令
1711
linux
linux 举报
2019-08-04

在我们初学linux系统shell时,可能会感觉$@与$*没什么区别,如下面shell脚本:

#!/bin/bash
# name:a.sh # echo 'this script $* is: '$* echo 'this script $@ is: '$@

执行结果表面上是一样的、如下图所示:

其实$*和$@还有一些区别的

$*(强调整体)       //所有参数列表,代表"$1 $2 … $n",即当成一个整体输出,每一个变量参数之间以空格隔开。 

$@(强调独立)      //所有参数列表,代表"$1" "$2" … "$n" ,即每一个变量参数是独立的 。也是全部输出。

 

我们可以在for语句中使用双引号""看出两个变量的区别,shell脚本如下: 

复制代码

#!/bin/bash
# script name:b.sh author:qq5201351
# 
for i in "$*";do
echo $i
done

echo "================="

for i in "$@";do
echo $i
done

复制代码

执行结果如下所示,由结果可见$@每一个参数都是独立的,所以在进行迭代时,也是单独输出的。

 

尊重别人的劳动成果 转载请务必注明出处:http://www.cnblogs.com/5201351/p/4590811.html


倒序看帖 只看楼主
热点关注
You need Perl 5 安装openssl时报错提示需要安装perl 5
shell 脚本中常见的 if [ $? -ne 0 ]; 意思
shell 中 if [ “x${var}“ == “x“ ] 中 x的作用
shell脚本每行后面多了一个^M的原因和解决办法
服务停止、启动、重启一体化脚本,万能语言启动脚本
shell参数判断
在后台用进程名运行bash脚本
shell脚本每行后面多了一个^M的原因和解决办法
定时检测服务,检测down掉后重启。系统检测到DMSERVER运行正常
挂载磁盘的时候遇到一个问题,挂载完磁盘之后重启服务器挂载的盘丢失了.
中标麒麟系统Your trial is EXPIRED and no VALID licens
termux 开启ssh并用用户名和密码登陆
extman-1.1自带了图形化显示日志的功能;此功能需要rrdtool的支持,您需要安装此些模块才可能正常显示图形日志。
postfix的相关个别参数设置
postfix中recipient/client/sender/helo四者的区别