概述

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

执行结果:

随机推荐

  1. 日常Bug排查-集群逐步失去响应

    前言 日常Bug排查系列都是一些简单Bug排查.笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_ Bug现场 最近碰到一个产线问题,表现为某个应用集群所有的节点全部下线了.导致上游调用全部 ...

  2. 关于 DataLeap 中的 Notebook,你想知道的都在这

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维 ...

  3. Solon2 开发之插件,四、插件热插拔管理机制(H-Spi)

    插件热插拔管理机制,简称:H-Spi.是框架提供的生产时用的另一种高级扩展方案.相对E-Spi,H-Spi 更侧重隔离.热插热拔.及管理性. 应用时,是以一个业务模块为单位进行开发,且封装为一个独立插 ...

  4. Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了

    如何阻止 Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了 使用 CountDownLatch CountDownLatch.CyclicBarrier 使用区别 多线 ...

  5. IDEA 报 Unable to import maven project: See logs for details

    用的apache-maven-3.6.2 报错,解决方法:降级成 apache-maven-3.6.1 版本 IDEA 报 Unable to import maven project: See lo ...

  6. Win10家庭/企业/教育版均可升级到专业版

    升级前,先备份现有KEY: cmd中输入 regedit 打开注册表,根据下面路径找到 BackupProductKeyDefault 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\ ...

  7. nginx: [emerg] unknown directive "?server" in /etc/nginx/conf.d/nginx.conf:1

    问题描述:启动nginx的时候报错 1.nginx: [warn] the "user" directive makes sense only if the master proc ...

  8. 【JAVA基础】Mybatis示例

    固定时间范围查询 <select id="selectPaidList" resultType="com.hand.htms.ifp.entity.IfpShipm ...

  9. 如何在CSDN上如何快速转载博客

    复制粘贴应该是最显而易见的方法,但是不仅会有丢失内容,而且格式也会丢失.要想达到更好的效果,可以从html源码入手. 1.在chrome浏览器中打开要转载的文章,右键选择检查(or使用F12) 2.在 ...

  10. 「HDU-2196」Computer (树形DP、树的直径)

    「HDU-2196」Computer 树形dp,树的最长路径(最远点对) 题意 给出一棵nn个结点的无根树,求出每个结点所能到达的最远点的距离. 解法 将无根树转成有根树,并进行两次DFS. 第一次D ...