shell脚本学习记录1(运算符)

news2025/8/4 18:23:53

Shell 传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):

#!/bin/bash

echo "shell 传递参数!"
echo "执行的文件名:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"

 另外,还有几个特殊字符用来处理参数:

#!/bin/bash

echo "shell 传递参数!"
echo "执行的文件名:$1"
echo "参数个数:$#"
echo "传递的参数作为一个字符串显示:$*"

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

Shell 数组(进阶)

关联数组

Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。

关联数组使用 declare 命令来声明,语法格式如下:

declare -A array_name

-A 选项就是用于声明一个关联数组。

关联数组的键是唯一的。

以下实例我们创建一个关联数组 site,一个关联数组 site1,并用不同方式创建不同的键值:

#!/bin/bash

#创建关联数组,并创建不同的键值
declare -A site=(["baidu"]="www.baidu.com" ["shougou"]="www.shougou.com" ["huohu"]="www.huohu.com")
#先声明一个关联数组,再设置键和值
declare -A site1
site1["google"]="www.google.com"
site1["runoob"]="www.runoob.com"
site1["taobao"]="www.taobao.com"

#访问shell数组
echo ${site[*]}
echo ${site1[@]}
echo ${site["baidu"]}

在数组前加一个感叹号 ! 可以获取数组的所有键,例如:

declare -A site
site["google"]="www.google.com"
site["runoob"]="www.runoob.com"
site["taobao"]="www.taobao.com"

echo "数组的键为: ${!site[*]}"
echo "数组的键为: ${!site[@]}"

 Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

#!/bin/bash

val=`expr 2 + 3`
echo "两个数的和为:$val"

注意

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
  • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

 算术运算符

#!/bin/bash
a=10
b=20

val=`expr $a + $b`
echo "a + b : $val"

val=`expr $a - $b`
echo "a - b : $val"

val=`expr $a \* $b`
echo "a * b : $val"

val=`expr $b / $a`
echo "b / a : $val"

val=`expr $b % $a`
echo "b % a : $val"

if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi

注意:

  • 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
  • if...then...fi 是条件语句

 关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

 布尔运算符

 逻辑运算符

 字符串运算符

文件测试运算符 

文件测试运算符用于检测 Unix 文件的各种属性。

 

 参考:Shell 基本运算符 | 菜鸟教程 (runoob.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

普中自动下载软件1.86下载程序失败案例

今天在用开发板做一个功能,下载的时候报错了,说芯片超时 确定驱动安装好了的 波特率也试了一圈 线也换过了 最后发现是芯片类型选错了,这个开发板是用的stc89c52,所以我选了图里这个,但是翻了开发板配套的资料,发现…

数据库系统概论 --- 期末单元集

第一章 绪论 一、选择题(必考题型) 1.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。在这几个阶段中,数据独立性最高的是 阶段。 A.数据库系统 B.文件…

ICRA2024

ICRA 2024 2024 IEEE International Conference on Robotics and Automation 2024年IEEE国际机器人与自动化大会 官网 http://ieee-icra.org/index.html CONNECT The 2024 IEEE International Conference on Robotics and Automation (ICRA2024) is the IEEE Robotics and Auto…

分布式系统和高可用架构设计方案

目录 分布式系统 RPC 的工作原理 分布式数据存储 分布式锁 降级、熔断、限流 链路追踪 系统优化和故障处理 分布式系统 传统单体服务架构代码数量庞大,牵一发而动全身,一个很小的改动都可能影响整个服务。正所谓不要把所有的鸡蛋装在一个篮子里&…

大学物理(上)-期末知识点结合习题复习(3)——质点运动学-惯性系 非惯性系 惯性力 动量定理 动量守恒定律

目录 1.惯性系 2.非惯性系 3.惯性力 题1 题目描述 题解 4.动量定理 题2 题目描述 题解 5.动量守恒定律 题3 题目描述 题解 1.惯性系 牛顿定律适用的参考系,总能在找到特殊的参照物群(参考系),使得牛顿第一定律成立…

02_LinuxLED驱动开发

目录 Linux下LED灯驱动原理 地址映射 ioremap函数 iounmap函数 I/O内存访问函数 LED灯驱动程序编写 编写测试APP 编译驱动程序 编译测试APP 运行测试 Linux下LED灯驱动原理 Linux下的任何外设驱动,最终都是要配置相应的硬件寄存器。所以LED灯驱动最终也是对I.MX6ULL…

前端面试题---事件循环机制和异步编程

一.JavaScript 中的事件循环(Event Loop)机制。 JavaScript 中的事件循环(Event Loop)是一种用于处理异步操作和事件的机制,它确保代码按照正确的顺序执行,并防止阻塞和死锁。 事件循环的工作原理如下&am…

2.Java概述|Java学习笔记

文章目录 Java的诞生Java重要特点JDK、JRE、JVMJava开发注意事项和细节说明注释Java 中的注释类型 Java的诞生 https://www.oracle.com/java/technologies/java-se-support-roadmap.html Java 技术体系平台: Java重要特点 Java 语言是面向对象的(oop)Java 语言…

Dcloud开发者注册,uniCloud服务空间创建。

一、注册dcloud开发者 1、登录dcloud官网,注册开发者账号,官网地址:https://www.dcloud.io/ 二、创建uniCloud服务空间 1、注册完成开发者后,点击开发者后台,点击uniCloud,进入uniCloud服务空间列表&…

shell脚本入门-多命令处理与变量

目录 1.多命令处理2.Shell变量Shell变量的介绍2.1 系统环境变量2.2自定义变量自定义局部变量查询变量值语法变量删除 自定义全局变量父子Shell环境介绍 2.3 自定义常量 1.多命令处理 多命令处理的介绍: 就是在Shell脚本文件中编写多个Shell命令 我们现在通过一些需…

自然语言处理实战10-文本处理过程与输入bert模型后的变化

大家好,我是微学AI,今天给大家介绍一下自然语言处理实战10-文本处理过程与输入bert模型后的变化,通过一段文本看看他的整个变化过程,经过怎样得变化才能输入到模型,输入到模型后文本又经过怎样的计算得到最后的结果。看…

逆向工程的未来在哪里?掌握逆向技能,开创新的职业道路!

前言 随着移动互联网的兴起,“APP”成了99%的互联网企业主要运营的产品,知名的例如“支付宝”、“美团”、“滴滴”、“抖音”等。用户基数的不断变大,安全性也经历着巨大的挑战。 app越来越多,也离不开我们的生活,而…

团队管理之性能实施团队日志10

在这一周中基本上遇到了性能实施过程中应该遇得到的复杂的问题。 像堆外内存引发OOM Killer,C coredump,负载该均衡不均衡,主机资源不够用,数据引发TPS抖动,IO引发TPS抖动之类的。 在这个项目中几乎碰到了我之前遇到…

2023Fiddler抓包学习笔记 -- 环境配置及工具栏介绍

一、Fiddler介绍 Fiddler是位于客户端和服务器端的HTTP代理,常用来抓http数据包,可以监控浏览器所有的http和https流量,查看分析请求数据包和响应数据包,伪造请求和响应等功能。 二、下载安装 1、下载地址 https://www.teleri…

企业——缺省路由

缺省路由是目的地址和掩码全为0的特殊路由 如果报文的目的地址无法匹配路由表中的任何一项,路由器将选择依照缺省路由来转发报文。 ip route-static 0.0.0.0 0.0.0.0 实验要求: 1、按照图中的要求配置IP 2、要求使用静态协议缺省实现访问2.0、3.0、…

linux时间同步,ntpd、ntpdate

linux时间同步,ntpd、ntpdate 一.Linux系统时间的设置二.Linux硬件时间的设置三.系统时间和硬件时间的同步四.不同机器之间的时间同步(重点)五.ntpd服务的设置六.ntp服务的启动与观察七.具体实践:7.1 NTP的配置7.1.1 配置/etc/ntp.conf7.1.2配置/etc/ntp…

VHDL语法

VHDL完整的、可综合的程序结构,必须包含实体和结构体两个最基本的语言结构。 具体取名由设计者自定,由于实体名实际上表达的是该设计电路的器件名,所以最好根据相应电路的功能来确定, 标识符命名规则: (1)标识符主要由字母、数字…

2023年中职组“网络安全”赛项南昌市竞赛任务书

2023年中职组“网络安全”赛项 南昌市竞赛任务书 网络空间安全赛项规程 一、赛项名称 赛项名称:网络空间安全 赛项组别:中职组 二、竞赛目的 通过竞赛,检验参赛选手对网络、服务器系统等网络空间中各个信息系统的安全防护能力&#xff0…

重用Playbook

文章目录 重用Playbookinclude语句如何写role默认变量和普通变量的区别tasks/main.yaml 如何使用变量、静态文件和模板使用x/*/main.yaml中的变量使用x/*/other_but_main.yaml中的资源 role的依赖 重用Playbook Ansible支持的两种重用机制是Roles和Includes。 Roles是一种可重…

【RuoYi-Cloud-Plus】学习笔记 06 - Sentinel(一)关于 StatisticSlot 以及 LeapArray

文章目录 前言参考目录学习笔记1、Sentinel 简介2、Sentinel 架构图3、Sentinel 源码学习3.1、包结构3.2、 LeapArray (滑动窗口算法的实现)3.3、StatisticSlot3.3.1、StatisticSlot#entry3.3.2、StatisticSlot#exit3.4、StatisticNode、StatisticSlot、…