[转帖]shell脚本中$0 $1 $# $@ $* $? $ 的各种符号的意义
概述
shell中有两类字符,一类是普通字符,在Shell中除了本身的字面意思外没有其他特殊意义,即普通纯文本;另一类即元字符,是Shell的保留字符,在Shell中有着特殊的含义。
今天主要介绍一下shell中字符$的各种用法。
转义字符$
在linux shell脚本中经常用到字符
,下面是
,下面是
</span><span class="katex-html"><span class="base"><span class="strut" style="height: 0.6833em;"></span><span class="mord cjk_fallback">,下面是</span></span></span></span></span>的一些常见用法</p>
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
测试脚本
为了方便大家理解,简单写了一个脚本做演示:
#!/bin/bash
echo "参数个数:$#"
echo "脚本名字:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "所有参数:$@"
echo "字符串所有参数:$*"
echo "当前脚本进程ID:$$"
echo "命令退出状态:$?"
执行结果:

$*与 $@不同点:
当被双引号包裹时,$@与没有被双引号包裹时没有变化,$@仍然是一个数组,
每个参数依然是分割独立的;但当$*被双引号包裹时,SHELL会将所有参数整合为一个字符串。
测试脚本如下:
root@kylin-vmwarevirtualplatform:/home/kylin/桌面# cat test1.sh
#!/bin/bash
echo "所有参数:"
for var in "$@"
do
echo $var
done
echo 字符串所有参数:
for var1 in "$*"
do
echo $var1
done
执行结果:

随机推荐
- gitee图床不能用了,心态崩了
起因 大概上周五晚上吧,想着可以正常下班了.也没啥事,正好可以逛逛自己的小破站,看看有没有小伙伴留言什么的. 然后发现小破站图片显示不出来了... 一开始也没在意,想着可能是Gitee又挂了,可能一会 ...
- 绝了,华为云服务器“The 3”出道,每款都很能打
近年来,随着企业上云转型.互联网信息产业技术不断发展与革新,云服务器在主机市场逐渐占领主导地位,云服务器品牌层出不穷,各家云厂商都想占据一席之地,这也就对各云厂商的提供的云服务器算力和云端服务能力的要 ...
- 云小课|MRS基础操作之集群健康检查
本文分享自华为云社区<云小课|MRS基础操作之集群健康检查>,作者:阅识风云. 阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视 ...
- 中秋佳节,程序员教你AI三步成诗,秒变“李白”
摘要:举杯邀明月,用技术来附庸风雅. 中秋佳节来临之际,你是否开始思念远方的亲朋好友,想为他们送上祝福?又或是与家人团圆赏月之时,希望借一段风雅诗词抒情达意? 华为云的开发者们教你一招,来个技术风的A ...
- KubeEdge和Kuiper“双剑合并”,轻松解决边缘流式数据处理
摘要:KubeEdge 是一个开源的边缘计算平台,它在Kubernetes原生的容器编排和调度能力之上,扩展实现了 云边协同.计算下沉.海量边缘设备管理.边缘自治等能力.KubeEdge还将通过插件的 ...
- GaussDB(for Influx)与开源企业版性能对比
摘要:相比于企业版InfluxDB,GaussDB(for Influx)能为客户提供更高的写入能力.更稳定的查询能力.更高的数据压缩率,高效满足各大时序应用场景需求. 本文分享自华为云社区<华 ...
- Taro架构构析(1):多端框架分析,Taro WePY uni-app对比
多端框架分类 全包型 这类框架最大的特点就是从底层的渲染引擎.布局引擎,到中层的 DSL,再到上层的框架全部由自己开发,代表框架是 Qt 和 Flutter.这类框架优点非常明显:性能(的上限)高:各 ...
- IAST 初探:博采众长、精准定位、DevOps友好
之前的文章中,我们了解了 SAST 和 DAST,本文将介绍将两者优势相结合的安全测试技术--IAST. ✦ ✦ 交互式应用安全测试(IAST)是一个自动识别和诊断应用程序和 API 漏洞的技术,它结 ...
- 火山引擎 ByteHouse:如何提升 18000 节点的 ClickHouse 可用性?
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 ClickHouse 是业内被广泛使用的 OLAP 引擎.当集群规模过大时,ClickHouse 则面临使用局限性 ...
- FB08、F.80凭证冲销校验增强
1业务场景 当使用FB08和F.80在前台冲销会计凭证时,需要限制三种不同的会计凭证类型,并报消息到相应的程序中处理这三种会计凭证类型. 2技术实现 在BADI和二代中均未找到合适的增强点,因此根据在 ...