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

快速上手SHELL脚本基础及变量与运算

 一、shell脚本中的基本元素

1.脚本的基本结构

脚本幻数,即脚本解释器,脚本运行的最优先指令,负责对脚本中其他命令进行解释

程序主题,程序主体通常由命令,执行逻辑控制器和数据组成

注释,脚本中的说明文字,不参与脚本执行,只是对脚本中的代码进行说明

2.脚本中的注释方法

  • 脚本中通常用#号注释单行内容

  • 多行注释

:空格"

xxx

xxx

"

二、脚本的书写规范

1.书写规范注意事项

  • 脚本文件名应见名知意,例如backup_mysql.sh
  • 文件开头指定脚本解释器 #!/bin/sh 或 #!/bin/bash
  • 脚本中尽量不要用中文注释,防止本机或切换系统环境后中文乱码的困扰
  • 多使用内部命令,如:echo、eval、exec、export、read、shift、exit
  • 尽量用少的命令完成动作
  • 开头加版本特权等信息
# Date:创建日期
# Author:作者
# Mail:联系方式
# Function:功能
# Version:版本
  • 利用缩进体现代码结构,更加利于后期阅读

2.vim用于书写脚本的设定

在编写一个脚本呢时我们需要书写一些主属性信息用来利与脚本阅读,用vim的自动编写功能可以实现对于这些重复动作的简化

 

效果:

三、脚本执行方法

1.在当前环境下运行

方法①        .空格+脚本名

这种方法是在shell环境里运行的,不会新开环境

方法②        source 脚本名

以上两中执行方法不需要脚本本身有可执行权限

2.在指定环境中运行 (开头#!后的环境中)

方法③        sh 脚本名

方法④        绝对路径调用

四、脚本测试(显示执行过程)

脚本在执行过程中如果出现问题,单从脚本的执行报错中找问题困难比较大,如果在执行时显示执行过程,这样就可以快速定位脚本的问题所在

👺注:在显示执行过程时,+行表示命令,不带+的行表示命令的输出

五、命令退出值

1.什么是退出值

  • 在UNIX或者Linux中,每个命令都会返回一个退出状态码
  • 退出状态码是一个整数,其有效范围为0~255
  • 通常情况下,成功的命令返回0,而不成功的命令返回非0值。非0值通常都被解释成一个错误码
  • 行为良好的UNIX命令,程序和工具都会返回0作为退出码来表示成功。

2.查看和修改退出值

  • 查看退出值

echo $?

  • 修改退出值

六、变量

1.变量命名规则

2.变量调用方法

$变量名

3.字符转义及引用

单引号表示强引用

双引号表示弱引用,其和单引号的区别在于不能引用 ` \ ! $

4.变量的类型

从变量的作用范围来划分,变量分为函数变量、环境级变量、用户级变量和系统级变量

  • 函数级变量只在函数内生效,通常用local来定义

  • 环境级变量只在当前的shell中生效,shell关闭变量被释放

  • 用户级变量只有登陆系统的指定用户,此变量才生效

👆创建用户级变量

  • 系统级变量是系统中的永恒设定,所有用户都可使用,系统变量通常保存到/etc/profile中

👺注:需使用source生效

5.常见的系统预设变量

http://www.xdnf.cn/news/9201.html

相关文章:

  • 一文带你彻底理清C 语言核心知识 与 面试高频考点:从栈溢出到指针 全面解析 附带笔者手写2.4k行代码加注释
  • UE C++学习笔记之按键绑定
  • 使用Dockerfile创建镜像
  • AI时代新词-人工智能生成内容(AIGC)
  • 不用框架也能做出 Apple 风的网页动画!
  • 295.数据流的中位数
  • 摩尔线程 MUSA 软件开发集成套件
  • 使用 qiankun 实现 Vue3 与 Avalon 混合应用集成实践
  • 一些git的常见操作记录
  • C50-指针数组
  • [灵龙AI API] AI生成视频API:文生视频 – 第2篇
  • 嵌入式开发新范式:NTP时间同步实验与高精度仿真平台实践
  • OpenGAN:基于开放数据生成的开放集识别
  • 一周学会Pandas2之Python数据处理与分析-Pandas2数据合并与对比-df.combine():元素级合并
  • 统一人体姿态估计与分割的新方法:KDC
  • C# Windows Forms应用程序-003
  • day 37
  • IP协议解析
  • 使用json传递信息时接收不到的问题
  • python做题日记(9)
  • 【AI News | 20250526】每日AI进展
  • AI时代新词-私有数据与AI结合的技术:隐私保护与数据利用的平衡
  • pg库分表操作步骤- PostgreSQL 分区表
  • 车载通信网络 --- 传统车载网络及其发展
  • 固态硬盘的寿命与可靠性如何保障?——以Kingston FURY Renegade G5为例的专业解析
  • 自动编码器 潜在空间 Autoencoders 视频截图
  • 浏览器指纹科普 | 语言 vs 界面语言,区别是什么?
  • GitLab-CI快速开始
  • gin使用Mysql连接池用法
  • IDEA没有出现TODO