Shell 脚本编程基础|学习笔记

简介: 快速学习 Shell 脚本编程基础.

开发者学堂课程【Linux Shell 编程入门与实战Shell 脚本编程基础】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/551/detail/7625


Shell 脚本编程基础

目录:

一、本章内容

二、编程基础

三、程序的执行方式

四、编程基本概念

五、Shell 脚本基础

六、创建 Shell 脚本

七、脚本规范

八、Shell 脚本示例


一、本章内容

编程基础:Shell 编程类别,特点,与其他语言的区别,如java,C语言

脚本基本格式:Shell 编程基本语法

变量

运算(加减乘除运算)

条件测试

配置用户环境:涉及到的相关配置文件

Shell脚本编程基础的实现是将之前学过的:计算机基础知识,Linux基础,文件管理,标准IO和管道,用户组和权限管理,文本处理工具的功能综合起来,去实现更自动化的任务,而非手工执行每条命令去执行部分特殊操作,而是将命令组合起来。

二、编程基础

程序:指令+数据

例:  vim f1  其中vim是程序,f1是要修改管理的数据

程序本身没有较大意义,其最主要功能为处理数据

程序编程风格:

过程式:以指令为中心,数据服务于指令(关注过程;程序按预定好的步骤一步一步实现;一般不过于复杂,可以统筹地控制每个流程;C语言是面向过程的语言)

对象式:以数据为中心,指令服务于数据(更适合开发大型软件。举例:如果工程较大,不可能细化到每个步骤,如一些人协作完成的大工程,总负责人把任务下发给工人,只需关注工人而不用关注工人具体做的每一件事,此时关注的是结果而非过程;java,python都是面向对象的语言)

Shell程序:提供了编程能力,解释执行


三、程序的执行方式

计算机:运行二进制指令

编程语言:

低级:汇编

高级:通常情况下使用高级语言

编译:高级语言-->编译器(程序员手工完成)-->目标代码(二进制格式数据)

Java,C#(微软开发语言)

解释:高级语言-->解释器(又称翻译器,计算机自动完成,不需要人工参与,能够直接运行)-->机器代码

Shell,perl,python

计算机只能理解0 1

通过编译与解释两种方法把单词数字等转换为0 1

Shell脚本本质将内部命令与外部命令集合,按顺序执行


四、编程基本概念

编程逻辑处理方式:

顺序执行(按照预先设定的次序执行)

循环执行(把某段代码重复执行多次;如将磁盘上各文件逐个处理,需要用到循环逻辑,循环最总会结束,可能发生循环异常)

选择执行(达到一定条件进行判断)

Shell编程:过程式(只适合管理小程序,可以用于运维工作),解释执行(不安全,只要拿到文本就能理解内容)

编程语言的基本结构:

各种系统命令的组合(将多个命令组合在一起)

数据存储:变量,数组

表达式:a + b

语句:if

例如用shell语句写hello world:

cat > hello.sh echo”hello world”

chmod + x hello.sh  //加执行权限

hello.sh 运行程序

报错:

command not found...   //找不到外部文件   echo$PATH  /

找文件

解决方法:直接输入绝对路径  /data/hello.sh

相对路径  ./hello.sh  

显示主机名:echo my hostname is hostname.sh 后缀表示是Shell 程序

Shell编程:将命令按顺序执行

五、shell脚本基础

shell脚本:

包含一些命令或声明,并符合一定格式的文本文件

格式要求:首行shebang机制  

解释: echo $SHELL

/bin/bash  //该程序帮助把文本内容转化为二进制形式

> f1  //创建空文件,前提需要特定的语法不同设备支持shell语法不同,当写Shell脚本时,需要告诉系统使用的你是哪种Shell语言,即shebang机制  

#!/bin/bash

#!/usr/bin/python  //用于python

#!/usr/bin/perl    //用于perl

标准写法:   #!/bin/bash  //是程序,不是文件夹。表示下面内容是以bash的shell语言写的。

Shell语言能批量执行命令,按顺序执行。适合运维工程师解决简单的,逐步性的运维工作。

例如:每天的备份;文件的复制;自动化的文本处理等

shell脚本的用途有:

自动化常用命令

执行系统管理和故障排除

创建简单的应用程序

处理文本或文件

(不适合管理复杂的环境)


六、创建shell脚本

第一步:使用文本编辑器来创建文本文件

第一行必须包括shell声明序列:#!

#!/bin/bash

添加注释(增强可读性)

注释以#开头

例如:

#Author:wang

#Data:2018-04-06

#Version:1.0

#Description:The first script

代码比较复杂的情况下,可在代码之前添加注释,解释下面代码的功能

第二步:运行脚本

给予执行权限,在命令上指定脚本的绝对或相对路径

show hostname    (执行权限)

另一种运行方式:

bash hello.sh  (文件即使没有执行权限也可以运行)

其他方式:

cat hello.sh | bash  //只要有标准输出均可实现

cat hello.sh  

将该代码内容放到一个网站上:vim/var/www/html/hello.sh

cat/var/www/html/hello.sh

现在访问其地址 192.168.30.128为默认网站 访问192.168.30.128/hello.sh,默认情况下自动下载该文件(hello.sh)

在别的计算机上可用 curl http://192.168.30.128/hello.sh直接显示出该文件内容

执行该文件 curl http://192.168.30.128/hello.sh |bash

实现远程主机的文件在本机执行,该方法可运用在远程调用脚本上。可用该方式将脚本放在远程的机器上,用自己的机器执行。

远程主机的程序在本机执行前提需要搭建共享服务,该内容之后讲解。

例如搭建了个人博客,脚本在个人博客上。

如果需要在某一台机器上运行该脚本,只需访问该路径并bash,不需要将程序下载到本机。

./hello.sh  //写上路径;

更加传统的方式;前提要加执行权限

直接运行解释器,将脚本作为解释器程序的参数运行。


七、脚本规范

脚本代码开头约定

1. 第一行一般为调用使用的语言

2. 程序名,避免更改文件名为无法找到正确的文件(尽可能写有含义的英文单词组合,不要使用汉字,汉字接入性较弱,尽量避免使用拼音)

3. 版本号

4. 更改后的事件

5. 作者相关信息

6. 该程序的作用,及注意事项

7. 最后是各版本的更新简要说明

描述信息与更新说明应用注释的形式在Shel程序中写出

 

八、脚本的基本结构

脚本的基本结构

#!SHEBANG

CONFIGURATION_VARIABLES   //变量

FUNCTION_DEFINITIONS      //函数

MAIN_CODE                //主程序


九、Shell脚本示例

#!/bin/bash

#------------------------

#Filename:  hello.sh

#Revision:  1.1

#Date:  2017/06/01

#Author:  wang

#Email:  wang@gmail.com

#Website:  www.magedu.com

#Description:  This is the first script

#-----------------------------

#Copyright:   2017 wang

#License:   GPl   //程序允许修改,但必须一GPI形式发布

echo “hello world”

相关文章
|
4月前
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。
|
2月前
|
存储 Unix Shell
确定Shell脚本在操作系统中的具体位置方法。
这对于掌握Linux的文件系统组织结构和路径方面的理解很有帮助,是我们日常工作和学习中都可能使用到的知识。以上讲解详细清晰,应用简便,是每一个想要精通操作系统的计算机爱好者必备的实用技能。
62 17
|
2月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
151 3
|
2月前
|
Linux Shell
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
Centos或Linux编写一键式Shell脚本删除用户、组指导手册
61 4
|
3月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
166 25
|
9月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
237 1
|
5月前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
370 32
|
4月前
|
关系型数据库 Shell 网络安全
定期备份数据库:基于 Shell 脚本的自动化方案
本篇文章分享一个简单的 Shell 脚本,用于定期备份 MySQL 数据库,并自动将备份传输到远程服务器,帮助防止数据丢失。
|
5月前
|
JavaScript Shell C#
多种脚本批量下载 Docker 镜像:Shell、PowerShell、Node.js 和 C#
本项目提供多种脚本(Shell、PowerShell、Node.js 和 C#)用于批量下载 Docker 镜像。配置文件 `docker-images.txt` 列出需要下载的镜像及其标签。各脚本首先检查 Docker 是否安装,接着读取配置文件并逐行处理,跳过空行和注释行,提取镜像名称和标签,调用 `docker pull` 命令下载镜像,并输出下载结果。使用时需创建配置文件并运行相应脚本。C# 版本需安装 .NET 8 runtime。
257 2
|
8月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问