shell的基础介绍

news2024/11/20 13:22:08

文章目录

    • shell数组
      • 读取数组
      • 关联数组
      • 获取数组的长度
    • Shell运算符
      • 算术运算符
      • 关系运算符
      • 布尔运算符
      • 逻辑运算符
      • 字符串运算符
      • 文件测试运算符
    • Shell echo命令
      • 1.显示普通字符串
      • 2.显示转义字符
      • 3.显示变量
      • 4.显示换行
      • 5.显示不换行
      • 6.显示结果定向至文件
      • 7.原样输出字符串,不进行转义或取变量(用单引号)
      • 8.显示命令执行结果
    • Shell read命令
      • read 命令的用法为
      • Shell read 命令支持的选项
    • Shell printf命令
      • printf 命令的语法
      • 格式说明符
      • printf 的转义序列
    • Shell test命令
      • 数值测试
      • 字符串测试
      • 文件测试

shell数组

Shell 脚本中的数组允许你存储一个元素列表,这些元素可以是数字、字符串或混合类型。Bash Shell 支持一维数组,不支持多维数组,但你可以通过模拟的方式来实现类似多维数组的功能。
在 Bash 中,数组可以通过多种方式声明和初始化。

  • 直接赋值,无需声明数组大小
array_name=(element1 element2 element3 ...)
  • 单独赋值,可以逐个元素地添加或修改
array_name[0]=element1  
array_name[1]=element2  
array_name[2]=element3

读取数组

读取数组元素值的一般格式是:

#访问特定元素
echo ${array_name[index]}
#访问所有元素
echo ${array_name[@]}  
# 或者  
echo ${array_name[*]}

关联数组

Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
关联数组使用 declare 命令来声明,语法格式如下:

#声明关联数组
declare -A assoc_array
#赋值
assoc_array[key1]="value1"  
assoc_array[key2]="value2"
#访问
echo ${assoc_array[key1]}
#遍历
for key in "${!assoc_array[@]}"; do  
    echo "$key -> ${assoc_array[$key]}"  
done

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

echo ${#array_name[@]}  
# 或者  
echo ${#array_name[*]}

Shell运算符

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

  • 算数运算符
  • 关系运算符
  • 布尔运算符
  • 字符串运算符
  • 文件测试运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。例如,两个数相加(注意使用的是反引号 ` 而不是单引号 ')

算术运算符

下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:
在这里插入图片描述
注意:条件表达式要放在方括号之间,并且要有空格,例如: [ a = = a== a==b] 是错误的,必须写成 [ $a == $b ]。
在这里插入图片描述

关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。下表列出了常用的关系运算符,假定变量 a 为 10,变量 b 为 20:
在这里插入图片描述
在这里插入图片描述

布尔运算符

下表列出了常用的布尔运算符,假定变量 a 为 10,变量 b 为 20:
在这里插入图片描述
在这里插入图片描述

逻辑运算符

以下介绍 Shell 的逻辑运算符,假定变量 a 为 10,变量 b 为 20:
在这里插入图片描述
在这里插入图片描述

字符串运算符

下表列出了常用的字符串运算符,假定变量 a 为 “abc”,变量 b 为 “efg”:
在这里插入图片描述

文件测试运算符

文件测试运算符用于检测 Unix 文件的各种属性。
属性检测描述如下:
在这里插入图片描述

Shell echo命令

echo 命令是 Shell 编程和命令行操作中非常基本且常用的一个命令,用于在终端或文件中输出文本、变量、环境变量或命令的执行结果。其基本语法如下:

echo [选项] [字符串]
  • -n:不输出行尾的换行符。
  • -e:启用转义字符的解释。
  • -E:明确禁止转义字符的解释(默认行为,但在某些情况下可能需要明确指定)。
    可以使用echo实现更复杂的输出格式控制。

1.显示普通字符串

在这里插入图片描述
这里的双引号完全可以省略。

2.显示转义字符

在这里插入图片描述

3.显示变量

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。
在这里插入图片描述

4.显示换行

在这里插入图片描述

5.显示不换行

在这里插入图片描述

6.显示结果定向至文件

在这里插入图片描述

7.原样输出字符串,不进行转义或取变量(用单引号)

在这里插入图片描述

8.显示命令执行结果

在这里插入图片描述

Shell read命令

Shell中的read命令是一个非常强大的工具,用于从标准输入(通常是键盘)或其他文件描述符中读取数据,并将读取的数据赋值给变量。read命令在Shell脚本编程中尤其重要,因为它允许脚本与用户进行交互或处理来自文件的数据。以下是关于read命令的详细介绍:

read 命令的用法为

read [-options] [variable...]
  • -options:指定read命令的选项,用于控制读取行为。
  • variable…:一个或多个变量名,用于存储读取的数据。如果没有指定变量,则默认将读取的数据存储在环境变量REPLY中。

Shell read 命令支持的选项

在这里插入图片描述

Shell printf命令

printf 命令在 Shell 编程中是一个非常有用的工具,它用于格式化并打印数据。与 echo 命令相比,printf 提供了更多的格式化选项,允许你更精确地控制输出格式。printf 的语法和 C 语言中的 printf 函数非常相似。

printf 命令的语法

printf format [arguments...]
  • format:定义输出格式的字符串,可以包含普通文本、格式说明符等。
  • arguments…:一个或多个要打印的变量或值,它们将按照 format 指定的格式进行格式化。

格式说明符

格式说明符以 % 开头,后跟一个或多个字符,用于指定变量的输出格式。一些常见的格式说明符包括:

%s字符串。
%d、%i十进制整数。
%u无符号十进制整数。
%o八进制整数。
%x、%X十六进制整数(%x 使用小写字母,%X 使用大写字母)。
%f浮点数。
%e、%E科学计数法表示的浮点数(%e 使用小写字母,%E 使用大写字母)。
%c单个字符。
%%打印 % 字符本身。

printf 的转义序列

在这里插入图片描述

Shell test命令

Shell 中的 test 命令是一个用于检查文件类型并比较值的条件表达式求值工具。它用于在脚本中进行条件判断,并根据条件是否满足来执行不同的命令或脚本块。尽管 test 命令本身非常强大,但在现代 Shell 脚本中,[(通常与 ] 一起使用)是一个指向 test 命令的链接,二者在功能上几乎是等价的.
基本语法:

test expression  
# 或者  
[ expression ]

注意:[ 后面和 ] 前面必须有空格,因为 [ 实际上是 test 命令的一个链接,而 ] 是 test 命令的参数的一部分。

数值测试

在这里插入图片描述

字符串测试

在这里插入图片描述

文件测试

在这里插入图片描述

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

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

相关文章

Macbook上运行Windows系统工具Parallels Desktop19

亲爱的笔记本小能手们,你们是否也有这样的困扰:在Macbook上运行Windows系统,却发现虚拟机软件要么卡顿,要么操作复杂?别急,今天就给你们种草一款神器——Parallels Desktop 19。 Parallels Desktop最新绿色…

无人机工程师技术高级证书详解

随着无人机技术的飞速发展,其在航拍、农业、测绘、救援、物流等多个领域的应用日益广泛,对无人机工程师的专业技能与综合素质提出了更高要求。无人机工程师技术高级证书,作为对无人机领域高级工程师专业技能的权威认证,不仅是对个…

QT网络编程

Qt 给用户提供了网络编程的接口,包括TCP、UDP、HTTP三种协议的API以及各种类,可以了解一下。 而在 QT 中想要使用网络编程,必须在pro文件中添加 network 模块,否则无法包含网络编程所需的头文件。 UDP UDP是传输层的协议&#…

Animate软件基础:在时间轴中标识动画

FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer:实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.co…

实战项目导航

目录 1.AI毕设生成器(完善中)2.计算机设计大赛案例3.c迷宫游戏4.python学生管理系统教学关注持续更新哦 1.AI毕设生成器(完善中) 文章链接 🚀 一键启航,编码从未如此简单! 探索Python毕业设计生…

vulnhub之serial

这次我们来做这个靶场 项目地址https://download.vulnhub.com/serial/serial.zip 使用vm新建虚拟机 以下为注意事项 第一步,收集资产 扫描靶场ip netdiscover -i eth0 -r 192.168.177.0/24 抓个包 扫描目录 看到了cookie中有一个user Tzo0OiJVc2VyIjoyOntzOj…

【Golang 面试 - 进阶题】每日 3 题(十八)

✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…

算法:BFS 解决拓扑排序

目录 拓扑排序 题目一:课程表 题目二:课程表II 题目三:火星词典 拓扑排序 有向无环图(DAG图) 有向无环图也就是有几个点,每个点之间的线段都是有向的,且任意拿出来几个点,都是无环的,这里…

Adaboost集成学习 | Matlab实现基于ELM-Adaboost极限学习机结合Adaboost集成学习故障诊断

目录 效果一览基本介绍程序设计参考资料效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于ELM-Adaboost极限学习机结合Adaboost集成学习故障诊断 ELM(Extreme Learning Machine)和 Adaboost 都是机器学习领域中常见的算法。ELM 是一种单隐层前馈神经网络,具有快速训练、…

使用 1panel面板 部署 springboot 和 vue

代码仓库:还没弄 目录 网站介绍安装步骤1. 准备云服务器2. 准备域名(可跳过)3. 安装1panel面板4. 服务器开放端口5. 进入1panel面板6. 安装并启动软件(服务器和面板开放端口)7. 打包并上传项目7.1 打包 Java项目&#…

算力共享中神经网络切片和算力分配策略

目录 神经网络切片 按照算力的分布进行网络层数切片;就是算力越强,运算神经网络层数越多 神经网络切片和算力占比进行映射 算力分配策略 get_current_shard 神经网络切片 按照算力的分布进行网络层数切片;就是算力越强,运算神经网络层数越多 神经网络切片和算力占比进…

基于RK3588+AI支持能源在线监测系统应用的AIOT产品方案

支持能源在线监测系统应用的AIOT产品方案 近年来,智慧能源行业受益于国家政策扶持、市场需求拉动和先进技术支撑呈现出了蓬勃发展态势。助推智慧能源发展,打造了支持能源在线监测系统应用的AIOT产品方案。 能源在线监测系统的市场潜力 随着社会经济的飞…

C++笔记---类和对象(中)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 一个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,分别为:构造函数,析构函数,拷贝构…

【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【vulnhub】W1R3S.inc靶机

靶机安装 下载地址:https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip 运行环境:vmware 信息收集 靶机发现IP扫描 nmap 192.168.93.0/24 端口扫描,发现开放21、22、80、3306端口 nmap -A 192.168.93.159 -p- 进行目录扫描 dirsearach -u http…

函数实例讲解(三)

文章目录 常用的三个数学函数1、绝对值函数ABS2、取整数部分INT3、求余数函数MOD 求极值函数max、min1、Max2、Min 附加条件下求平均数1、AVERAGE2、AVERAGEIF3、AVERAGEIFS VLOOKUP与COLUMN1、VLOOKUP2、COLUMN 查找函数LOOKUP1、基础语法2、向量形式3、数组形式 常用的三个数…

Odoo生产执行(MES)系统管理解决方案简介

什么是生产执行管理解决方案? Odoo生产执行管理解决方案可以在统一平台上集成诸如生产调度、产品跟踪、质量控制、设备故障分析、网络报表等管理功能,使用统一的数据库和通过网络联接可以同时为生产部门、质检部门、工艺部门、物流部门等提供车间管理信息…

windows 部署 mindspore GPU 开发环境(WSL)

基础环境 windows 环境: Windows 10 版本:22H2 操作系统版本:22621.2283 WSL 系统 版本:2.2.4.0 Ubuntu-20.04 一、自定义位置安装Ubuntu 确保已经安装 WSL 在微软应用商店搜索时务必输入全名 Ubuntu20.04,并安装…

LLM:SGD、adam

SGD没有一阶和二阶动量。adam是融合了这两种动量。 参考:https://blog.csdn.net/yinyu19950811/article/details/90476956 【十分钟搞明白Adam和AdamW,SGD,Momentum,RMSProp,Adam,AdamW】

【window10/window11】解决任务管理器有进程无法强制结束情况

以管理员身份启动控制台窗体,然后从任务管理器中查询到你要结束的进程名,然后运行以下命令(UniAccessAgent.exe替换成你要结束的进程): wmic process where nameUniAccessAgent.exe delete 此方法可以解决在任务管理…