Linux Shell——基本语法(变量、流程控制)

shell基本语法

    • 一、变量
    • 二、流程控制
  • 总结

  最近学习了shell脚本,记录一下相关语法

一、变量

   变量是很重要的,是用于存储数据值的容器

变量名要遵循以下规则:
(1)只能包含字母、数字和下划线
(2)不能以数字开头
(3)不能使用shell关键字

  1. 定义变量
    语法:var_name=value

等号之间不能有空格

在这里插入图片描述

  1. 使用变量
    语法:$var_name 或者 ${var_name}

在这里插入图片描述

  1. 只读变量
    定义变量之后 , 使用 readonly 变量名 命令将变量变为只读

只读变量不能被修改

在这里插入图片描述

  1. 删除变量
    变量定义之后可以删除,但是只读变量不能被删除
    语法:unset 变量名

在这里插入图片描述

  1. 变量类型
    shell的变量是有类型的,下面介绍常用的几种,分别是字符串、整数变量、数组变量、环境变量、特殊变量
    5.1 字符串
    字符串可以用单引号、也可以用双引号,但是两者是有区别的,单引号括起来的字符串输出时带有变量是无效的,会原样输出,双引号则相反
    下面介绍几种字符串常用操作:
str = 'linux shell'
字符串拼接   'str'$str'str'
获取字符串长度 ${#str}
提取子字符串  ${str:start:end}

在这里插入图片描述
5.2 整数变量
语法:declare -i 变量名=变量值

使用declare -i 可以定义一个整数变量,如果变量值是非整数,则变量会被赋值为0

5.3 数组变量
语法:declare -A 数组名=数组列表

使用 declare -A 可以定义一个数组变量

5.4 环境变量

5.5 特殊变量
特殊变量具有特殊的含义:

常见的特殊变量有以下:
$0 表示脚本名称
$1…n 表示传递给脚本的参数
$# 表示传递给脚本的参数数量
$? 表示上一个命令的退出状态,可判断上一个命令是否执行成功

二、流程控制

  1. 条件控制
    语法:
    if 条件
    then
      语句
    elif 条件
    then
      语句
    else
      语句
    fi

if条件句不允许某一分支的语句是空

在这里插入图片描述
在这里插入图片描述

  1. 循环控制
    2.1 for循环
    语法:
    for item in 字符串/列表
    do
      语句
    done

2.2 while循环
语法:
while 条件
do
  语句
done

终止循环使用 break
跳出当前循环使用 continue

在这里插入图片描述

  1. 多分支控制
    语法:
    case 值 in
    模式)
    语句
    ;;
    *)
    语句
    ;;
    esac

;;是一个模式的结束
当值没有匹配到任何一个模式时 匹配*

在这里插入图片描述

总结

   最后继续总结一下吧:

   变量以及变量类型
   流程控制包括条件控制、循环控制、多分支控制

  希望对看到本文的你有帮助。





上一篇 Linux命令——压缩和解压缩
创作不易,记得点赞收藏哦
下一篇 待定

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙开发组件之Web

一、加载一个url myWebController: WebviewController new webview.WebviewControllerbuild() {Column() {Web({src: https://www.baidu.com,controller: this.myWebController})}.width(100%).height(100%)} 二、注意点 2.1 不能用Previewer预览 Web这个组件不能使用预览…

Android camera的metadata

一、实现 先看一下metadata内部是什么样子: 可以看出,metadata 内部是一块连续的内存空间。 其内存分布大致可概括为: 区域一 :存 camera_metadata_t 结构体定义,占用内存 96 Byte 区域二 :保留区&#x…

Linux install manual 1Panel

前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括: 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定;高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等;安全可…

Qt图像处理-Qt中配置OpenCV打开本地图片

本文讲解Qt中配置OpenCV过程并用实例展示如何使用OpenCV打开图片(windows环境下) 一、下载OpenCv 本文使用版本OpenCV-MinGW-Build-OpenCV-3.4.5 下载地址: https://codeload.github.com/huihut/OpenCV-MinGW-Build/zip/refs/heads/OpenCV-3.4.5 点击Code-local-Downlo…

大模型的实践应用13-量化后的通义千问Qwen的18亿参数在CPU上的部署,最小2GB显存可跑,并利用两种文本流式方式输出

大家好,我是微学AI,今天给大家介绍大模型的实践应用13-量化后的通义千问Qwen的18亿参数在CPU上的部署,最小2GB显存可跑,并利用两种文本流式方式输出。Qwen-1_8B-Chat是阿里云研发的通义千问大模型系列的18亿参数规模的模型。Qwen-1.8B是基于Transformer的大语言模型, 在超大…

LabVIEW进行癌症预测模型研究

LabVIEW进行癌症预测模型研究 癌症是一种细胞异常增生的疾病。随着年龄的增长,细胞分裂速度放缓,但癌细胞会失去控制地不断分裂,形成可能良性或恶性的肿瘤。 2012年的国际癌症数据显示,新发癌症病例和癌症相关死亡人数有所增加。…

.NET 开发人员,迎接高薪的挑战,你准备好了吗?

我发现我对编程的热情深深植根于我对逻辑的偏好。加入CSDN,标志着进入 .NET 开发人员世界的激动人心的旅程的开始。下面我与您分享我的故事。 编程之路 我大学是主修通信计算机创新,各种各样的选修课程,从平面设计、UX/UI 设计、数字营销到电影&#x…

在Node.js中MongoDB删除数据的方法

本文主要介绍在Node.js中MongoDB删除数据的方法。 目录 Node.js中MongoDB删除数据使用mongodb库删除数据使用Mongoose库删除数据 Node.js中MongoDB删除数据 在Node.js中,可以使用mongodb和Mongoose库来连接和操作MongoDB数据库。 下面是分别使用这两个库在MongoDB中…

双端队列和优先级队列

文章目录 前言dequedeque底层设计迭代器设计 priority仿函数数组中的第k个最大元素优先级队列模拟实现pushpop调整仿函数存储自定义类型 前言 今天要介绍比较特殊的结构,双端队列。 还有一个适配器,优先级队列。 deque 栈的默认容器用了一个deque的东西…

福德机械:植保无人机的领航者

亲爱的读者们,欢迎来到福德机械的神奇世界。在这个充满活力和创新的世界里,我们专注于植保无人机的发展与应用,以实现农业现代化、智能化和高效化的目标。植保无人机,作为一种高效、环保和安全的农业工具,已经逐渐成为…

自动化测试流程详解

最近很多小伙伴问我自动化测试到底该怎么做?流程是什么样的?在每个阶段都需要注意什么?本文也就主要从自动化测试的基本流程入手,对面试自动化测试工程师的同学会有不少帮助。对于在职的朋友,也可以参考此流程&#xf…

速锐得解码适配新能源纯电动汽车比亚迪E3车型CAN矩阵协议

在新能源电动汽车中王牌有特斯拉,王朝有比亚迪。在国内,比亚迪顺风顺水,能见度最高的王朝系列拥有EV、双模以及燃油三种能源类型,攻占着全国不同的市场,性价比高的,属于E系列,早期的E6是整个出租…

vue3-在使用el-form编辑的时候会出现在修改表单值的时候在列表出现值也相对应的更新

这里我犯了一个错误,就是使用reactive来定义声明响应式状态,下面是reactive的局限性,不能替换整个编辑的对象的,所以,我们在这里要使用ref来声明响应式状态

机器学习可重复性危机下,创建复杂数据系统的挑战

文章目录 一、前言二、主要内容三、总结 🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 一、前言 数据科学系统已成为众多研究领域的关键性工具,其开发者群体呈现出多元化的背景特征。在过去十年中,尽管数据科学与机器学习的强…

python语言的官方网站地址,python语言官方网站网址

大家好,给大家分享一下python语言的官方网站地址,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! Python官方网站地址及源代码 Python是一种高级编程语言,广泛应用于各个领域,包括软件开发、数据分析、人…

[PyTorch][chapter 7][李宏毅深度学习][深度学习简介]

前言: 深度学习常用的开发平台 TensorFlow torch theano caffe DSSTNE mxnet libdnn CNTK 目录: 1: 深度学习发展历史 2: DeepLearning 工程简介 3: DNN 简介 一 发展历史 二 DeepLearning 工程简介 深度学习三…

自动化测试知识总结

一、自动化测试 自动化测试的定义:使用一种自动化测试工具来验证各种软件测试的需求,它包括测试活动的管理与实施、测试脚本的开发与执行。 自动化测试只是测试工作的一部分,是对手工测试的一种补充; 自动化测试绝不能代替手工测试;多数情况…

ohpm : 无法将“ohpm”项识别为 cmdlet、函数...

这是因为没有在环境变量里配置 Ohpm. 左上角File->Settings,找到Ohpm放的路径 bin目录下,然后复制 此电脑->右键属性->高级系统设置->环境变量->系统变量找到Path,添加刚才复制的那一行 重启 DevEco ,在Terminal输入 ohpm -v ,出现版本号就欧了 如果…

MAC下加载动态库

MAC引用动态库时报错: 查看一个可执行文件或者动态库引用的第三方库路径:otool -L xxx.dylib 第一行是动态库的安装名称(INSTALL Name)。当另一个客户端链接到这个 dylib 时,dylib 的安装 ID 会被复制到客户端中作为…

一文解析数据结构是如何装入 CPU 寄存器的?

我们在之前很多文章的讲解中涉及了CPU与寄存器,然后有同学问了这样一个问题:既然CPU内部的寄存器数量有限,容量有限,那么我们使用的庞大的数据结构是怎样装入寄存器供CPU计算的呢?这篇文章就为你讲解一下这个问题。 内…