【LInux】Shell脚本编写基本语法

news2025/1/10 13:01:01

文章目录

  • 一、前期准备
    • 1、查看本机bash
    • 2、编辑脚本
  • 二、 判断结构
    • 1、if结构
    • 2、if/else结构
    • 3、if/elif/else结构
    • 4、case结构
  • 三、循环结构
    • 1、for循环
    • 2、while循环
    • 3、until循环
  • 四、谢谢观看!

一、前期准备

1、查看本机bash

which bash

在这里插入图片描述
之后编写脚本时,第一行要写入此位置。

2、编辑脚本

vi 脚本名    #名字可以随便其,后缀为.sh

进入后,点击 i ,进入编辑模式,开始编写内容。
编写完成之后,点击esc,之后输入 :wq,保存并退出。

二、 判断结构

Shell提供的常用判断结构:if、if/else、if/elif/else 、case

1、if结构

格式:

if 判断条件
then
	命令语句
fi

if 判断条件; then
	命令语句
fi

若判断条件为真,执行命令语句。
例,编写一个脚本jyan.sh,判断在当前目录下是否存在名为name.yaml的文件。
(注:-e 判断文件是否存在)

#脚本内容

#!/usr/bin/bash
if [ -e name.yaml ]; then
	echo "file exsit!!!"  #若文件存在,打印file exsit!!!
fi

修改脚本权限为可执行。

chmod +x jyan.sh

在这里插入图片描述

2、if/else结构

格式:

if 判断条件
then
	命令语句1
else
    命令语句2
fi

例,编写脚本jyan2.sh,读取输入的字符串,判断字符串为空,输出为空,若不为空,输出字符串。(-z 判断字符串是否为空)

#脚本内容

#!/usr/bin/bash
read str    #读取字符串
if [ -z "$str" ]; then
	echo "str is null"  #若字符串为空,打印
else
	echo $str
fi

在这里插入图片描述

3、if/elif/else结构

格式:

if 判断条件; then
	命令语句1
elif 判断条件; then
    命令语句2
……
else
	命令语句3
fi

例,编写脚本jyan3.sh,读取学生成绩,判断级别。

#脚本内容

#!/usr/bin/bash
read score    #读取
if [ $score -lt 0 -o $score -gt 100 ]; then    #判断分数是否在0~100内
	echo error             #不在,打印error
elif [ $score -ge 90 ]; then          #大于等于90
	echo A
elif [ $score -ge 80 ]; then          #大于等于80
	echo B
elif [ $score -ge 70 ]; then          #大于等于70
	echo C
else								  #70以下
	echo D                            
fi

在这里插入图片描述

4、case结构

格式:

case "$var" in
var1) 
	命令语句1;;
var2) 
	命令语句2;;
var3) 
	命令语句3;;
……
*)
	命令语句n;;
esac

var分别与var1、var2、var3……进行比较,若相匹配,执行语句,后跳转到esac结束。
若未匹配成功,执行*后语句。

#!/usr/bin/bash
read day
case "$day" in
1)
	echo 2;;
2)
	echo 3;;
*)
	echo error;;
esac

在这里插入图片描述

三、循环结构

break,continue与在C语言中用法相似,跳出循环。
break:直接退出循环。
continue:退出本次循环,执行下一次循环。

1、for循环

格式:

for var in 读取列表
do
	命令语句
done

do ……done之间的是循环体,循环的时候,会从读取列表中依次读取一个数赋给var,直到列表中的值被读取完。
例,编写脚本,循环输出1~5.

#!/usr/bin/bash
for var in 1 2 3 4 5   #或 for var in{1..5}
do
	echo $var
done

在这里插入图片描述

2、while循环

格式:

while 判断条件   #当条件为假时,退出循环
do
	命令语句
done

例,循环输出1~5

#!/usr/bin/bash
num=1
while (( $num <=5 ))
do
	echo $num
	let num++     #使用let命令,使num自增
done

在这里插入图片描述

3、until循环

格式:

until 判断条件   #当条件为真时,退出循环
do
	命令语句
done

其用法与while相似,只是判断条件有所不同。

四、谢谢观看!

参考书籍:《Linux系统管理与自动化运维》黑马程序员/编著。

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

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

相关文章

数据同步工具Sqoop原理及场景优化

目录 0 数据同步策略 1 数据同步工具 ​编辑 2 Sqoop同步数据原理分析 2.1 原理分析 2.2 Sqoop基本使用分析 3 切片逻辑 3.1 MR切片逻辑 3.2 Hive CombineInputformat切片逻辑 3.3 实验1:Map任务并行度分析1 3.4 实验2: Map任务并行度分析2 3.5 实验3:Map任务并行…

C++ 类的基础用法与详细说明:简单易懂的入门指南

什么是类&#xff1f; C类_百度百科 类是C中一种用于封装数据和功能的基本结构。你可以将类视为一种自定义的数据类型&#xff0c;它可以包含数据&#xff08;成员变量&#xff09;和操作这些数据的函数&#xff08;成员函数&#xff09;。 创建一个简单的类 让我们通过一个…

Java爬虫:获取商品评论数据的高效工具

在电子商务的激烈竞争中&#xff0c;商品评论作为消费者购买决策的重要参考&#xff0c;对于商家来说具有极高的价值。它不仅能够帮助商家了解消费者的需求和反馈&#xff0c;还能作为改进产品和服务的依据。Java爬虫技术&#xff0c;以其稳健性和高效性&#xff0c;成为了获取…

Vue2的依赖注入(跨级通信)基本使用

provide(提供) &#xff0c;inject(注入) 祖先级组件用provide传递数据,它的所有后代都可以通过inject取到数据 使用演示&#xff1a; //祖先组件 <template><div>父组件传的值&#xff1a;{{num}} </div> </template><script> //导入子组件 i…

SourceMonitor,免费代码统计工具,覆盖率,圈复杂度,代码行

SourceMonitor是一款免费的代码度量工具&#xff0c;包含代码行&#xff0c;覆盖率&#xff08;无条件覆盖率&#xff09;&#xff0c;圈复杂度&#xff0c;函数调用深度等指标的测量。 用以下软件安装包&#xff0c;低版本的初始化工程会闪退&#xff0c;工具下载路径&#xf…

Python(numpy库)

numpy基础 NumPy 的全称是“ Numeric Python”&#xff0c;它是 Python 的第三方扩展包&#xff0c;主要用来计算、处理一维或多维数组 ndarray NumPy 定义了一个 n 维数组对象&#xff0c;简称 ndarray 对象&#xff0c;它是一个一系列相同类型元素组成的数组集合。数组中的…

h5页面与小程序页面互相跳转

小程序跳转h5页面 一个home页 /pages/home/home 一个含有点击事件的元素&#xff1a;<button type"primary" bind:tap"toWebView">点击跳转h5页面</button>toWebView(){ wx.navigateTo({ url: /pages/webview/webview }) } 一个webView页 /pa…

springboot二手交易平台

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 系统展示 【2024最新】基于JavaSpringBootVueMySQL的&#xff0c;前后端分离。 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;…

电脑上的顽固软件卸载不干净?试试这几款卸载工具,简单几步解决

相信大家日常的工作或学习生活中&#xff0c;都需要使用电脑&#xff0c;而为了完成工作&#xff0c;都会在电脑上安装一些工具。有时候不需要这些工具了&#xff0c;想要卸载时&#xff0c;发现有些软件太顽固了&#xff0c;卸载不掉&#xff0c;或者是卸载不干净。如果您也遇…

uniapp-uniapp + vue3 + pinia 搭建uniapp模板

使用技术 ⚡️uni-app, Vue3, Vite, pnpm &#x1f4e6; 组件自动化引入 &#x1f34d; 使用 Pinia 的状态管理 &#x1f3a8; tailwindcss - 高性能且极具灵活性的即时原子化 CSS 引擎 &#x1f603; 各种图标集为你所用 &#x1f525; 使用 新的 <script setup> …

Excel功能区变灰是什么原因造成?怎么解决?

Microsoft Excel是广泛使用的电子表格软件&#xff0c;但有时用户可能会遇到功能区变灰的问题&#xff0c;这可能导致功能无法使用&#xff0c;影响工作效率和用户体验。本文将深入探讨Excel功能区灰色的原因及解决方案&#xff0c;帮助读者快速解决这一问题。 一、Excel功能区…

Polypyus部署、使用与原理分析

文章目录 前言1、概述2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.2、使用源码安装系统 2.2、使用方法2.2.1、命令行界面操作方法2.2.2、图形界面操作方法 3、测试用例4、参考文献总结 前言 本博客的主要内容为Polypyus的部署、使用与原理分析。本博文内容较长&…

【Linux】Linux之基础IO

我们先回顾一下C文件接口, #include <stdio.h> #include <string.h>int main() {FILE *fp fopen("myfile", "w");if (!fp){printf("fopen error!\n");}const char *msg "hello world!\n";int count 5;while (count--)…

DORA 机器人中间件学习教程(5)——3D激光雷达数据可视化

DORA中3D激光雷达数据可视化 1 总体思路2 DORA数据接收节点3 编写yml文件4 启动节点参考资料 截止目前 DORA还没有类似于ROS2中RVIZ这样的可视化工具&#xff0c;而在调试算法时我们又需要将数据进行可视化以验证代码的正确性。目前的解决方法是将DORA中的数据发送到ROS2中&…

SpringCloud Gateway保姆级入门教程

什么是微服务网关 SpringCloud Gateway是Spring全家桶中一个比较新的项目&#xff0c;Spring社区是这么介绍它的&#xff1a; 该项目借助Spring WebFlux的能力&#xff0c;打造了一个API网关。旨在提供一种简单而有效的方法来作为API服务的路由&#xff0c;并为它们提供各种增强…

深度学习:开启人工智能的新纪元

深度学习&#xff1a;开启人工智能的新纪元 深度学习是机器学习的一个子领域&#xff0c;它基于人工神经网络的学习算法&#xff0c;特别是那些具有多个非线性变换的层&#xff08;即“深度”&#xff09;。这些算法模仿人脑处理信息的方式&#xff0c;通过学习数据的多层次表…

Python Appium自动化操作抖音

1、功能介绍 使用Python和Appium给手机抖音上的同城模块自动评论&#xff0c;主要是通过模拟用户在抖音同城模块的操作&#xff0c;实现自动发送评论的功能。具体步骤如下&#xff1a; - 安装并配置好Python环境&#xff1b; - 安装Appium库&#xff0c;用于自动化操作手机应…

AI与测试行业调研

业务方向及应用场景 方向 技术 应用 大语言模型 私有化大模型&#xff1a; llama2 privateGPT 业务分析 测试数据生成 机器学习、深度学习应用 视觉自动化&#xff1a; FastbotApplitools 视觉自动化 缺陷预测与挖掘 知识图谱 neo4j 测试用例生成 精准测试 大语言模…

从A到Z,一文通览Python所有内置函数:编程效率提升100%

Python中的内置函数&#xff0c;这些函数覆盖了从基本数据处理到高级编程功能的各种用途。下面&#xff0c;将逐一介绍每个函数的用途和提供相应的代码示例。 A abs()&#xff1a;返回数字的绝对值。 print(abs(-5)) # 输出: 5 aiter()&#xff1a;返回异步迭代器。 async…

【从零开始的LeetCode-算法】910. 最小差值 II

给你一个整数数组 nums&#xff0c;和一个整数 k 。 对于每个下标 i&#xff08;0 < i < nums.length&#xff09;&#xff0c;将 nums[i] 变成 nums[i] k 或 nums[i] - k 。 nums 的 分数 是 nums 中最大元素和最小元素的差值。 在更改每个下标对应的值之后&#xf…