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”

相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
108 1
|
3月前
|
Shell Linux
Linux shell编程学习笔记30:打造彩色的选项菜单
Linux shell编程学习笔记30:打造彩色的选项菜单
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
60 2
6种方法打造出色的Shell脚本
|
28天前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
56 1
|
1月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
49 2
|
2月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
54 6
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
Shell
Shell编程(下)
Shell编程(下)
108 1
|
2月前
|
Shell Linux Windows
Shell编程(上)
Shell编程(上)
46 1
|
2月前
|
Shell Linux 开发工具