概述

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. spring-mvc 系列:拦截器和异常处理器(HandlerInterceptor、HandlerExceptionResolver)

    目录 一.拦截器的配置 二.拦截器的三个抽象方法 三.多个拦截器的执行顺序 四.基于配置的异常处理器 五.基于注解的异常处理器 一.拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 ...

  2. Windows下编译并使用64位GMP

    目录 1. 概述 2. 编译 2.1. GCC环境 2.2. 编译过程 3. 使用 3.1. 调用 3.2. 示例 4. 参考 1. 概述 GMP是一个开源的数学运算库,它可以用于任意精度的数学运算, ...

  3. 去哪儿网 (Qunar) DevOps 实践分享

    这是 2017 年王晓翔在 msup 全球软件案例研究峰会上的分享,重点分享了提高工程效率过程中存在的问题.取得的成果和要做的事情.内容详实,具有可操作性.我有幸看到了,所以在征得晓翔的同意下重新截图 ...

  4. 认识BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor

    本文分享自华为云社区<Spring高手之路13--BeanFactoryPostProcessor与BeanDefinitionRegistryPos>,作者: 砖业洋__ . 在Spri ...

  5. 边缘AI研发落地生态挑战调研报告发布

    摘要:随着边缘设备的广泛使用和性能提升,将机器学习相关的部分任务迁移到边缘,也即边缘AI技术,已成为必然趋势.但仅凭技术是不足够完成落地和产业转化的.近日我们启动了边缘AI研发落地生态挑战调研.我们发 ...

  6.  iOS代码混淆-从入门到放弃

    ​ iOS代码混淆-从入门到放弃 目录 1. 什么是iOS代码混淆? 2. iOS自动代码混淆的方法是什么? 3. iOS代码混淆的作用是什么? 4. 怎么样才能做到更好的iOS代码混淆? 总结 参考 ...

  7. RabbitMQ--工作模式

    单一模式 即单机不做集群 普通模式 即默认模式,对于消息队列载体,消息实体只存在某个节点中,每个节点仅有 相同的元数据,即队列的结构 当消息进入A节点的消息队列载体后,消费 者从B节点消费时,rabb ...

  8. CO41创建生产订单维护增强字段

    一.CO41计划订单中新增增强字段 报表中新增字段,并可维护,当点击转换创建生产订单时,将四个字段的值,维护到生产订单对应的字段中 二.增强结构 在SFC_POCO中新增对应的字段 三.屏幕增强 找到 ...

  9. HDU - 2897 邂逅明下 (简单博弈)

    题目链接: https://vjudge.net/problem/HDU-2897 题目大意: 就是现在一堆石子有n颗, 每次只能拿走p~q颗, 当剩余少于p颗的时候必须一次拿完 拿走最后一颗的人败 ...

  10. 如何在iOS手机上查看应用日志

    ​ 引言 在开发iOS应用过程中,查看应用日志是非常重要的一项工作.通过查看日志,我们可以了解应用程序运行时的状态和错误信息,帮助我们进行调试和排查问题.本文将介绍两种方法来查看iOS手机上的应用日志 ...