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

相关推荐
梦想的颜色6 小时前
【Docker原理】Docker 容器一文打尽:生命周期、环境管控、迁移备份、日志进程排查、垃圾清理
运维·docker·容器·容器生命周期·容器日志排查·容器迁移备份·容器进程管理
欢呼的太阳7 小时前
数据库设计Step by Step (10)——范式化
服务器·数据库·oracle
夜雪一千8 小时前
Python enumerate() 函数完整详解:遍历同时获取索引,告别手动计数
服务器·windows·python
donoot9 小时前
Linux系统下图书馆级电子书全自动标准化分类整理完整实施方案
大数据·linux·运维·电子书管理
ITKEY_9 小时前
macOS brew 安装的nginx 文件在哪里?
运维·nginx·macos
Felix-lxd9 小时前
Ubuntu 22.04 配置 Nginx
linux·nginx·ubuntu
Elastic 中国社区官方博客9 小时前
如何比较两个 Elasticsearch 索引并找出缺失的文档
大数据·运维·数据库·elasticsearch·搜索引擎
大E帝国子民110 小时前
MacOS 安装Seismic Unix
服务器·macos·unix
Tim_Van10 小时前
在 CentOS 7 中安装 Chromium 的完整步骤
linux·运维·chrome·centos
德福危险11 小时前
富有想象力的XSS盲打:靶机练习之Tempus_fugit5
服务器·网络·xss