编程基础
程序
程序:算法+数据结构
数据:是程序的核心
数据结构:数据在计算机中的类型和组织方式
算法:处理数据的方式
程序编程风格:
过程式:以指令为中心,数据服务于指令
对象式:以数据为中心,指令服务于数据
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"语句时会立即停止脚本的执行。