编程基础

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

程序的执行方式

 计算机:运行二进制指令
 编程语言:人与计算机之间交互的语言
 低级编程语言:
机器:二进制的0和1的序列,称为机器指令。与自然语言差异太大,难懂、难写
汇编:用一些助记符号替代机器指令,称为汇编语言
 高级编程语言:
编译:高级语言-->编译器-->机器代码-->执行
C,C++
解释:高级语言-->执行-->解释器-->机器代码
shell,python,php,JavaScript,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: wang@gmail.com
#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: 命令本身
    $*: 传递给脚本的所有参数,全部参数合为一个字符串
    $@: 传递给脚本的所有参数,每个参数为独立字符串
    $#: 传递给脚本的参数的个数
    $@ $* 只在被双引号包起来的时候才会有差异

    set -- 清空所有位置变量

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

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

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