1.1Shell脚本编程基础

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.1Shell脚本编程基础相关的知识,希望对你有一定的参考价值。

编程基础

? 程序
?程序:算法+数据结构
?数据:是程序的核心
?数据结构:数据在计算机中的类型和组织方式
?算法:处理数据的方式
?程序编程风格:
过程式:以指令为中心,数据服务于指令
对象式:以数据为中心,指令服务于数据
?shell程序:提供了编程能力,解释执行

程序的执行方式

? 计算机:运行二进制指令
? 编程语言:人与计算机之间交互的语言
? 低级编程语言:
机器:二进制的0和1的序列,称为机器指令。与自然语言差异太大,难懂、难写
汇编:用一些助记符号替代机器指令,称为汇编语言
? 高级编程语言:
编译:高级语言-->编译器-->机器代码-->执行
C,C++
解释:高级语言-->执行-->解释器-->机器代码
shell,python,phpjavascript,perl

编程基本概念

?编程逻辑处理方式:
顺序执行
循环执行
选择执行
?shell编程:过程式、解释执行
编程语言的基本结构:
各种系统命令的组合
数据存储:变量、数组
表达式: a + b
语句:if 

shell脚本基础

?shell脚本:

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

?格式要求:首行shebang机制
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
shell脚本的用途有:
? 自动化常用命令
? 执行系统管理和故障排除
? 创建简单的应用程序
? 处理文本或文件

创建shell脚本

?第一步:使用文本编辑器来创建文本文件
?第一行必须包括shell声明序列:#!
     #!/bin/bash
?添加注释
     注释以#开头
?第二步:运行脚本
?给予执行权限,在命令行上指定脚本的绝对或相对路径
?直接运行解释器,将脚本作为解释器程序的参数运行

脚本规范

?脚本代码开头约定
1、第一行一般为调用使用的语言
2、程序名,避免更改文件名为无法找到正确的文件
3、版本号
4、更改后的时间
5、作者相关信息
6、该程序的作用,及注意事项
7、最后是各版本的更新简要说明

shell脚本示例

#!/bin/bash
#------------------------------------------
#Filename: hello.sh
#Revision: 1.1
#Date: 2017/06/01
#Author: wang
#Email: [email protected]
#Website: www.magedu.com
#Description: This is the first script
#------------------------------------------
#Copyright: 2017 wang
#License: GPL
echo “hello world”

脚本调试

?检测脚本中的语法错误
bash -n /path/to/some_script
?调试执行
bash -x /path/to/some_script

变量

shell中的变量分为

? ?1.局部变量:作用范围在当前shell进程,无法在父子进程或其他进程之间传递,

? ? 2.全局变量:作用范围在当前shell与其有血缘关系的进程中。

? ? 3.本地变量:作用范围在脚本中某段代码中。

? ? 4.位置变量:用于通过命令向脚本的位置变量传递参数。

? ? 5.特殊变量:用于表示某些变量的信息。

?```
1.局部变量:

? ? 赋值:name=‘value‘

? ? value可以是任意字符串。因为shell变量是弱类型变量,所以为变量不需要事先声明也没有类型。当变量被引用时会根据语句来匹配变量类型。

? ? set命令可以打印所有已有定义的变量。unset name用于删除已定义的变量。

2.全局变量



? ? 赋值:export name=‘value‘

? ? evn命令可以打印当前所有全局变量。

3.只读变量

? ? 赋值:readonly name=‘value‘

只读变量只能声明,无法修改与删除。但是可以使用readonly -p name查看只读变量。

4.位置变量

? ? 可以使用$1、$2、$3…来对变量进行引用,shift命令可以修改变量队列。

????$0: 命令本身
????$*: 传递给脚本的所有参数,全部参数合为一个字符串
[email protected]: 传递给脚本的所有参数,每个参数为独立字符串
????$#: 传递给脚本的参数的个数
[email protected] $* 只在被双引号包起来的时候才会有差异

????set -- 清空所有位置变量

# 退出状态
? ? shell利用退出状态码来判断进程的执行状态。

? ? “0”表示进程执行成功,其他数字“1~255”表示进程执行失败。退出状态存储在“$?”变量中,在脚本执行中,退出状态取决于脚本中最后执行命令的退出状态。

? ? 也可以通过"exit N"来设置进程的退出状态,但是脚本执行到"exit"语句时会立即停止脚本的执行。

以上是关于1.1Shell脚本编程基础的主要内容,如果未能解决你的问题,请参考以下文章

代码片段:Shell脚本实现重复执行和多进程

shell基础知识讲解

shell脚本编程学习笔记-shell脚本编程基础介绍

shell脚本基础

DAY11 Shell脚本基础(Enginner05-1)

运维与自动化系列③自动化部署基础与shell脚本实现