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

简介: 快速学习Shell脚本编程基础|学习笔记

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

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



目录:

一、本章内容

二、编程基础

三、程序的执行方式

四、编程基本概念

五、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”

相关文章
|
22天前
|
Java Shell Linux
使用 sh -x 进行 shell 脚本调试
使用 sh -x 进行 shell 脚本调试
33 9
使用 sh -x 进行 shell 脚本调试
|
2天前
|
监控 关系型数据库 MySQL
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
优秀的网络工程师,早就偷偷收藏了这9 个实用 Shell 脚本!
|
16天前
|
监控 Shell Linux
探索Linux操作系统下的Shell编程之魅力
【8月更文挑战第4天】本文旨在通过一系列精心设计的示例和分析,揭示在Linux环境下进行Shell编程的独特之处及其强大功能。我们将从基础语法入手,逐步深入到脚本的编写与执行,最终通过实际代码案例展现Shell编程在日常系统管理和自动化任务中的应用价值。文章不仅适合初学者构建扎实的基础,同时也为有一定经验的开发者提供进阶技巧。
28 11
|
12天前
|
存储 Shell 应用服务中间件
[ansible]wget批量调用shell脚本
[ansible]wget批量调用shell脚本
|
15天前
|
运维 监控 Shell
掌握100个开箱即用的Shell脚本~(附PDF)
Shell脚本是实现Linux系统管理及自动化运维所必备的重要工具。许多其它岗位的小伙伴也经常使用Shell脚本来实现某项需求。 今天分享《100个shell脚本案例》,共有55页,支持文字搜索定位,代码清晰可复制。
|
22天前
|
Shell 测试技术 Linux
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值
29 3
|
1月前
|
JavaScript 前端开发 Shell
Shell 脚本编程保姆级教程(上)
Shell 脚本编程保姆级教程(上)
|
1月前
|
Shell Linux C语言
|
1月前
|
Shell 网络安全
shell脚本 配饰ssh
【7月更文挑战第15天】
23 4
|
22天前
|
Shell Linux Perl
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
shell 编程中 awk ,wc ,$0,$1 等 命令的使用总结
20 0