1. 一些基础知识
1.1. 程序
程序:算法+数据结构
数据:是程序的核心
数据结构:数据在计算机中的类型和组织方式
算法:处理数据的方式
1.2. 程序编程风格:
过程式:以指令为中心,数据服务于指令
对象式:以数据为中心,指令服务于数据
- shell程序:提供了编程能力,解释执行
1.3. 程序的执行方式
计算机:运行二进制指令
编程语言:人与计算机之间交互的语言
低级编程语言:
- 机器:二进制的0和1的序列,称为机器指令。与自然语言差异太大,难懂、难写
- 汇编:用一些助记符号替代机器指令,称为汇编语言
- 如:ADD A,B 将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中
- 汇编语言写好的程序需要汇编程序转换成机器指令
- 汇编语言稍微好理解,即机器指令对应的助记符,助记符更接近自然语言 高级编程语言:
- 编译:高级语言–>编译器–>机器代码–>执行
C,C++ - 解释:高级语言–>执行–>解释器–>机器代码
shell,python,php,JavaScript,perl

1.4. 编程逻辑处理方式:
顺序执行
循环执行
选择执行
1.5. shell编程:过程式、解释执行
编程语言的基本结构:
- 各种系统命令的组合
- 数据存储:变量、数组
- 表达式:例如 a + b
- 语句:例如if ,for
2. SHELL脚本
2.1. shell脚本:
- 包含一些命令或声明,并符合一定格式的文本文件
- 格式要求:首行shebang机制
#!/bin/bash
#!/usr/bin/python
#!/usr/bin/perl
2.2. shell脚本的用途有:
- 自动化常用命令
- 执行系统管理和故障排除
- 创建简单的应用程序
- 处理文本或文件
2.3. 创建shell脚本
- 第一步:使用文本编辑器来创建文本文件
- 第一行必须包括shell声明序列:#!
- 示例:#!/bin/bash :注意centos7 里面/bin 和/user/bin相同,/bin就是一个软链接
- 添加注释
- 注释以#开头
- 第一行必须包括shell声明序列:#!
- 第二步:运行脚本
- 给予执行权限,在命令行上指定脚本的绝对或相对路径
- 直接运行解释器,将脚本作为解释器程序的参数运行
2.3.1. 注意点:
写脚本后缀虽然没有要求(linux不看后缀),但尽量写成sh,容易分辨,同时脚本名称要与功能相关
加了执行权限之后,因为它既不在PATH中,也没有存入hash表中,因此想要执行这个脚本,有下面几种方式:
- 直接写绝对路径
- 把当前目录加入PATH路径中 PATH=./:$PATH,用这个方法执行时脚本要在当前目录
- 把脚本存放的目录的绝对路径存放到PATH中 PATH=/dir:$PATH
- 注意:如果只在shell里修改,则退出无法保存,因此要写到文件中,文件家目录为/etc/profile.d/####.sh ,可以仍然写在之前定义的evn.sh中
即使脚本没有执行权限,也可以用
bash 脚本路径的方式来执行它,就相当于是运行解释器执行了脚本上面方法的变种:
cat 脚本 | bash 或 curl 脚本 |bash,它可以用在浏览器上来进行远程执行,许多安装程序就是这样做的. 例子:### 文件后缀改为txt,则打开192.168.0.2/hello.txt路径则可以在网站上直接查看,如果文件后缀为sh则会把它下载下来 scp /data/script/hello.sh 192.168.0.2:/var/www/html 输入口令: curl http://192.168.0.2/hello.sh |bash ### 这样就可远程直接运行这个脚本了如果想要脚本中命令输出带颜色,则例如 echo -e "\e[1;33mhello world\e[0m",而更多命令查看转义帮助
- 注意:想要cat文本显示颜色,则在VIM插入模式下,ctrl+v然后按excape(或者输入027)快捷键,然后后面跟[1;33m文本 ,ctrl+v+快捷键[0m ,则会显示为黄色
- 容易错的部分:
- 一定要在insert模式下按ctrl+v,不然会进入visual block模式
- 注意^[[1;33m文本^[[0m ,注意快捷键会加上一个托字符加[ ,相当于echo里面的\033或者\e ,后面还得再加[
- 注意控制颜色的数字中间的分隔符是;分号,不是逗号
2.4. 脚本规范
- 脚本代码开头约定 1、第一行一般为调用使用的语言 2、程序名,避免更改文件名为无法找到正确的文件 3、版本号 4、更改后的时间 5、作者相关信息 6、该程序的作用,及注意事项 7、最后是各版本的更新简要说明
2.5. 脚本的基本结构
#!SHEBANG CONFIGURATION_VARIABLES FUNCTION_DEFINITIONS MAIN_CODE
3. 脚本调试(其实是利用set命令)
3.1. 检测脚本中的语法错误(但是不执行脚本中的命令)
bash -n /path/to/some_script
- 注意:脚本中如果有语法错误,当运行它的时候会把语法错误前面的命令全部执行,所以一定要提前检测脚本中的语法错误
3.2. 调试执行
bash -x /path/to/some_script
- 脚本中如果有命令错误,则这一条命令可以不执行,脚本仍然会执行到最后,可以用这个命令来检测每条命令的执行结果
留言