快速上手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.常见的系统预设变量

相关推荐
Decay__3 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子5 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
HideF6 小时前
Linux
linux·服务器·网络
万联WANFLOW6 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
Ruiery8 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
乌恩大侠8 小时前
从 AI-RAN 到 AI Agent:基于 NVIDIA Nemotron 构建 5G/6G 智能网络故障诊断系统
服务器·人工智能·5g·o-ru·ai-ran·电信大模型
Decay__9 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
丰锋ff10 小时前
压缩命令笔记
linux
江华森10 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维
迪菲赫尔曼10 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测