当前位置: 首页 > news >正文

Linux---shell脚本

文章目录

  • 目录

    文章目录

    前言

    一.Shell脚本定义

    shell脚本书写规范

     shell脚本执行方式

     二.Shell变量

    变量定义

    定义规范

    定义方式

     变量的运算

    数值运算

     数值比较

    未完待续......


前言

希望通过本文的学习,你能够掌握Shell脚本的基本知识和实用技巧,将Shell脚本融入到你的日常工作中,成为你提高工作效率、实现自动化任务的得力助手。让我们一起踏上这段探索Shell脚本的旅程,开启一段充满无限可能的自动化之旅吧!


一.Shell脚本定义

Shell以文本方式提供了与操作系统内核进行交互的方式。用户可以在shell脚本文件中写入一系列系统命令,然后执行shell脚本就可以自动执行脚本文件中的命令从而节省大量时间。

Shell可以帮助用户高效地执行一系列命令和任务。通过学习和掌握Shell脚本的编写技巧,用户可以大大提高工作效率和自动化水平。

shell脚本书写规范

  1. 脚本命名
    • 脚本名应以.sh结尾,名称应尽量具有描述性,如ClearLog.shSerRestart.sh等。
  2. 编码格式
    • 尽量使用UTF-8编码,注释及输出尽量使用英文。
  3. 执行权限
    • 一般应给予脚本执行权限,但一些仅用于变量定义的配置文件则无需加执行权限。
  4. 解释器声明
    • 脚本首行应使用#!/bin/bash(或#!/usr/bin/env bash)来声明解释器,没有空格,不带任何选项。

下面是一个简单的脚本案例:

#创建一个以.sh结尾的shell脚本文件
[root@localhost sh]# vim test_1.sh
首行添加解释器声明,在此之后可以添加需要执行的命令
#!/bin/bash
【添加需要执行的命令】#添加完脚本内容后给脚本添加执行权限
[root@localhost sh]# chmod u+x test_1.sh

 shell脚本执行方式

直接运行脚本

  1. 方法描述
    • 在终端中输入脚本文件的路径并按下回车键即可执行脚本。
    • 例如,如果脚本文件名为script.sh,并且位于当前目录下,则可以在终端中输入./script.sh来执行该脚本。
  2. 特点与要求
    • 需要确保脚本文件具有可执行权限
    • 可以使用chmod命令来设置脚本的权限,如chmod +x script.sh
    • 脚本文件的第一行通常包含Shebang(如#!/bin/bash),用于指定解释器。
#利用路径的方式执行一下脚本
[root@localhost sh]# ./test_1.sh
#若无执行权限会出现如下报错:
-bash: ./test_1.sh: 权限不够#提示“权限不够”代表当前用户无执行权限,需要添加权限
[root@localhost sh]# chmod u+x test_1.sh

 使用shell解释器执行

  1. 方法描述
    • 通过显式地指定Shell解释器来执行脚本。
    • 例如,使用bash script.shsh script.sh来执行脚本。
  2. 特点与要求
    • 不需要脚本文件具有可执行权限
    • 可以选择不同的Shell解释器,如bash、sh、zsh等。
    • 适用于不同Shell环境,提高了脚本的兼容性。
[root@localhost sh]# bash test_1.sh[root@localhost sh]# sh test_1.sh

 二.Shell变量

顾名思义,变量就是程序设计语言中的一个可以变化的量,从本质上讲,变量就是在程序中保存用户数据的一块内存空间,而变量名就是这块内存空间的地址。 

变量定义

定义规范

定义变量有以下几点需要注意: 

  • 变量名可以包含下划线,数字,大小写字母,但不能以数字开头。
  • "="两边不要有空格。
  • “值”如果含有空格,要使用单引号' '或双引号“ ”引起来
  • 定义变量时,变量名前是不需要加$的,引用变量时需要在变量名前加$

常见定义错误如下:

变量名不能以数字开头,所以会报错
[root@localhost ssh]# 1aa=123
bash: 1aa=123: command not found...变量名只能以数字,字母,下划线组合,所以报错
[root@localhost ssh]# aa-1=123
bash: aa-1=123: command not found...等号右边有空格,所以报错
[root@localhost ssh]# aa=1 2
bash: 2: command not found...

  正常的变量定义如下:

[root@localhost ssh]# a=123
[root@localhost ssh]# echo $a
123

定义方式

基本定义式

格式如下:

变量=值
[root@localhost ssh]# a=123
[root@localhost ssh]# echo $a
123

  命令结果定义式

格式如下:

变量=$(命令)

例如,定义一个名称是IP的变量,对应的值是ens160的IP,命令如下:

[root@localhost ~]# IP=$(ifconfig ens160 | awk '/inet /{print $2}')
[root@localhost ~]# echo $IP
192.168.23.143

 交互式定义

使用read命令从用户输入中获取变量的值。这种方法通常用于需要用户输入的场景。

格式如下:

read -p '提示信息' 变量

 当执行read命令时,系统会提示用户输入一些内容,所输入的值会赋值给read后面的变量,这里我们输入的是123,所以打印a变量时看到的是123。

[root@localhost ~]# read -p "请输入数字:" a
请输入数字:123
[root@localhost ~]# echo $a
123

 变量的运算

数值运算

+表示加法
-表示减法
*表示乘法
/表示除法
**表示次方

进行数学运算的表达式有$(()),$[ ],let等。

[root@localhost ~]# a=$[1+2]
[root@localhost ~]# echo $a
3

 数值比较

-eq相等
-ne不相等
-gt大于
-ge大于等于
-lt小于
-le小于等于

 练习1:判断1等于2,命令如下:

[root@localhost ~]# [1 -eq 2 ]
bash: [1: command not found...
[root@localhost ~]# echo $?
127

 1是不能等于2的,所以判断不成立,返回值是非零值。

练习2:判断1不等于2,命令如下:

[root@localhost ~]# [ 1 -ne 2 ]
[root@localhost ~]# echo $?
0

1不等于2,所以判断成立,返回值为0。 


未完待续.......

相关文章:

Linux---shell脚本

文章目录 目录 文章目录 前言 一.Shell脚本定义 shell脚本书写规范 shell脚本执行方式 二.Shell变量 变量定义 定义规范 定义方式 变量的运算 数值运算 数值比较 未完待续...... 前言 希望通过本文的学习,你能够掌握Shell脚本的基本知识和实用技巧&#xff0c…...

Android12的ANR解析

0. 参考: ANR分析 深入理解 Android ANR 触发原理以及信息收集过程 1.ANR的触发分类: ANR分为4类: InputDispatchTimeout:输入事件分发超时5s,包括按键和触摸事件。BroadcastTimeout:比如前台广播在10s内未执行完成&#xff0…...

初学人工智不理解的名词3

TTS领域的名词 from gpt-4o 在 TTS(文本到语音合成) 领域,以下是 CFM、One-Step 蒸馏 和 ReFlow 的含义和作用的详细解释: 1. CFM(Consistent Flow Matching) Consistent Flow Matching(一致流…...

ADS项目笔记 1. 低噪声放大器LNA天线一体化设计

在传统射频结构的设计中,天线模块和有源电路部分相互分离,两者之间通过 50 Ω 传输线级联,这种设计需要在有源电路和天线之间建立无源网络,包括天线模块的输入匹配网络以及有源电路的匹配网络。这些无源网络不仅增加了系统的插入损…...

J.U.C - 深入解读阻塞队列实现原理源码

文章目录 Pre生产者-消费者模式阻塞队列 vs 普通队列JUC提供的7种适合与不同应用场景的阻塞队列插入操作:添加元素到队列中移除操作:从队列中移除元素。 ArrayBlockingQueue源码解析类结构指定初始容量及公平/非公平策略的构造函数根据已有集合初始化队列…...

【大语言模型学习】LORA微调方法

LORA: Low-Rank Adaptation of Large Language Models 摘要 LoRA (Low-Rank Adaptation) 提出了一种高效的语言模型适应方法,针对预训练模型的适配问题: 目标:减少下游任务所需的可训练参数,降低硬件要求。方法:冻结预训练模型权重,注入低秩分解矩阵,从而在不影响推理…...

Spring Boot【一】

Spring Boot全局配置文件 application.properties 是 Spring Boot 的标准配置文件,用于集中管理应用程序的配置属性。它的主要作用是将配置信息与代码分离,使得应用程序更具可维护性和可配置性。 Application.yaml配置文件 YAML文件格式是JSON超集文件…...

H.265流媒体播放器EasyPlayer.js H.264/H.265播放器chrome无法访问更私有的地址是什么原因

EasyPlayer.js H5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、MP3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方…...

【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩

1. rowkey的设计 ​ RowKey可以是任意字符串,最大长度64KB,实际应用中一般为10~100bytes,字典顺序排序,rowkey的设计至关重要,会影响region分布,如果rowkey设计不合理还会出现region写热点等一系列问题。 …...

Dart:字符串

字符串:单双引号 String c hello \c\; // hello c,单引号中使用单引号,需要转义\ String d "hello c"; // hello c,双引号中使用单引号,不需要转义 String e "hello \“c\”"; // hell…...

平衡二叉搜索树之 红黑 树的模拟实现【C++】

文章目录 红黑树的简单介绍定义红黑树的特性红黑树的应用 全部的实现代码放在了文章末尾准备工作包含头文件类的成员变量和红黑树节点的定义 构造函数和拷贝构造swap和赋值运算符重载析构函数findinsert【重要】第一步:按照二叉搜索树的方式插入新节点第二步&#x…...

2:Vue.js 父子组件通信:让你的组件“说话”

上一篇我们聊了如何用 Vue.js 创建一个简单的组件,这次咱们再往前走一步,讲讲 Vue.js 的父子组件通信。组件开发里,最重要的就是让组件之间能够“说话”,数据能流通起来。废话不多说,直接开干! 父组件传数据…...

6. Keepalived配置Nginx自动重启,实现7x24提供服务

一. Keepalived配置Nginx自动重启,实现7x24提供服务 1.编写不停的检查nginx服务器状态,停止并重启,重启失败后则停止keepalived脚本 cd /etc/keepalived/ vim check_nginx_alive_or_not.sh #---内容如下:--------------- #!/bin/bash A=`ps -C nginx --no-header |wc -l...

【PS】蒙版与通道

内容1: 、选择蓝色通道并复制,对复制的蓝色通道ctrli进行反向选择,然后ctrll调整色阶。 、选择载入选区,然后点击rgb。 、点击蒙版 、点击云彩图层调整位置 、点击色相/饱和度,适当调整 、最后使用滤镜等功能添加光圈…...

C++创建型模式之生成器模式

解决的问题 生成器模式(Builder Pattern)主要解决复杂对象的构建问题。当一个对象的创建过程非常复杂,涉及多个步骤和多个部件时,使用生成器模式可以将对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表…...

鸿蒙NEXT应用示例:切换图片动画

【引言】 在鸿蒙NEXT应用开发中,实现图片切换动画是一项常见的需求。本文将介绍如何使用鸿蒙应用框架中的组件和动画功能,实现不同类型的图片切换动画效果。 【环境准备】 电脑系统:windows 10 开发工具:DevEco Studio NEXT B…...

postgresql(功能最强大的开源数据库)继承特性和分区实现

PostgreSQL实现了表继承,在多重表继承下,对上亿条不同类别的数据条目进行按型号、按月份双层分区管理,既可在总表查阅所有条目的共有字段,也可在各类型字表查询附加字段,非常高效。 分区是通过继承的方式来实现的&…...

论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking

VIPose: Real-time Visual-Inertial 6D Object Pose Tracking 文章概括摘要I. INTRODACTIONII. 相关工作III. APPROACHA. 姿态跟踪工作流程B. VIPose网络 文章概括 引用: inproceedings{ge2021vipose,title{Vipose: Real-time visual-inertial 6d object pose tra…...

微服务治理详解

文章目录 什么是微服务架构为什么要使用微服务单体架构如何转向微服务架构服务治理服务治理治的是什么服务注册与发现服务熔断降级服务网关服务调用服务负载均衡服务配置中心 微服务解决方案SpringCloud体系EurekaHystrixGatewayOpenFeignRibbonConfig SpringCloud Alibaba体系…...

“南海明珠”-黄岩岛(民主礁)领海基线WebGIS绘制实战

目录 前言 一、关于岛屿的基点位置 1、领海基点 二、基点坐标的转换 1、最底层的左边转换 2、单个经纬度坐标点转换 3、完整的转换 三、基于天地图进行WebGIS展示 1、领海基点的可视化 2、重要城市距离计算 四、总结 前言 南海明珠黄岩岛,这座位于南海的…...

观察 Taotoken 在多地域请求下的延迟与稳定性表现

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察 Taotoken 在多地域请求下的延迟与稳定性表现 对于依赖大模型 API 进行开发的团队而言,服务的延迟与稳定性是影响开…...

如何用applera1n免费绕过iOS激活锁:完整指南与操作教程

如何用applera1n免费绕过iOS激活锁:完整指南与操作教程 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 你是否购买了一部二手iPhone或iPad,却发现设备被原主人的Apple ID锁定&a…...

对比直接使用厂商 API 体验 Taotoken 在模型切换上的便利性

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商 API 体验 Taotoken 在模型切换上的便利性 在个人开发项目中接入大模型时,开发者通常面临一个选择&am…...

SimulinkVeriStandLabVIEW协同开发——从模型编译到交互式仪表盘部署

1. 工具链协同开发的核心价值 在电力电子和工业控制领域,快速原型开发往往需要跨越建模、实时测试和人机交互三个关键环节。Simulink、VeriStand和LabVIEW组成的工具链,就像汽车制造的流水线——Simulink是设计图纸的工程师,VeriStand是组装车…...

如何在3分钟内为Photoshop安装AVIF插件:让你的图片体积减半的终极方案

如何在3分钟内为Photoshop安装AVIF插件:让你的图片体积减半的终极方案 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format 还在为网站图片加载缓慢而烦恼…...

NS-USBLoader终极指南:3步搞定Switch游戏管理与RCM注入的完整教程

NS-USBLoader终极指南:3步搞定Switch游戏管理与RCM注入的完整教程 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gitcode.c…...

终极Windows Defender移除指南:13项核心服务的完整卸载方案

终极Windows Defender移除指南:13项核心服务的完整卸载方案 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirror…...

Arm Cortex-X2/X3架构解析与性能优化实践

1. Arm Cortex-X2/X3集群架构概述在Armv9架构的高性能计算领域,Cortex-X2和X3代表了当前最先进的CPU设计理念。作为DynamIQ共享单元(DSU)的核心组件,它们通过可配置的缓存层次结构和智能一致性协议,为现代异构计算提供了灵活的解决方案。1.1 …...

3分钟完成30分钟任务:词达人自动化助手终极指南

3分钟完成30分钟任务:词达人自动化助手终极指南 【免费下载链接】cdr 微信词达人,高正确率,高效简洁。支持班级任务及自选任务 项目地址: https://gitcode.com/gh_mirrors/cd/cdr 你是否厌倦了每周在词达人平台上花费数小时完成枯燥的…...

终极指南:如何在Mac上免费快速导出微信聊天记录

终极指南:如何在Mac上免费快速导出微信聊天记录 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因误删重要微信聊天记录而焦虑?或需要查找…...