1. 一些基础知识

1. 一些基础知识

1.1. 程序

程序:算法+数据结构
数据:是程序的核心
数据结构:数据在计算机中的类型和组织方式
算法:处理数据的方式

1.2. 程序编程风格:

过程式:以指令为中心,数据服务于指令
对象式:以数据为中心,指令服务于数据

  • shell程序:提供了编程能力,解释执行

1.3. 程序的执行方式

计算机:运行二进制指令
编程语言:人与计算机之间交互的语言
低级编程语言:

  • 机器:二进制的0和1的序列,称为机器指令。与自然语言差异太大,难懂、难写
  • 汇编:用一些助记符号替代机器指令,称为汇编语言
    • 如:ADD A,B 将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中
    • 汇编语言写好的程序需要汇编程序转换成机器指令
    • 汇编语言稍微好理解,即机器指令对应的助记符,助记符更接近自然语言 高级编程语言:
  • 编译:高级语言–>编译器–>机器代码–>执行
    C,C++
  • 解释:高级语言–>执行–>解释器–>机器代码
    shell,python,php,JavaScript,perl

shell脚本编程基础知识插图


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脚本的用途有:

  1. 自动化常用命令
  2. 执行系统管理和故障排除
  3. 创建简单的应用程序
  4. 处理文本或文件

2.3. 创建shell脚本

  1. 第一步:使用文本编辑器来创建文本文件
    • 第一行必须包括shell声明序列:#!
      • 示例:#!/bin/bash :注意centos7 里面/bin 和/user/bin相同,/bin就是一个软链接
    • 添加注释
      • 注释以#开头
  2. 第二步:运行脚本
    • 给予执行权限,在命令行上指定脚本的绝对或相对路径
    • 直接运行解释器,将脚本作为解释器程序的参数运行

2.3.1. 注意点:

  1. 写脚本后缀虽然没有要求(linux不看后缀),但尽量写成sh,容易分辨,同时脚本名称要与功能相关

  2. 加了执行权限之后,因为它既不在PATH中,也没有存入hash表中,因此想要执行这个脚本,有下面几种方式:

    1. 直接写绝对路径
    2. 把当前目录加入PATH路径中 PATH=./:$PATH,用这个方法执行时脚本要在当前目录
    3. 把脚本存放的目录的绝对路径存放到PATH中 PATH=/dir:$PATH
    • 注意:如果只在shell里修改,则退出无法保存,因此要写到文件中,文件家目录为/etc/profile.d/####.sh ,可以仍然写在之前定义的evn.sh中
  3. 即使脚本没有执行权限,也可以用 bash 脚本路径 的方式来执行它,就相当于是运行解释器执行了脚本

  4. 上面方法的变种: 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 ### 这样就可远程直接运行这个脚本了
  5. 如果想要脚本中命令输出带颜色,则例如 echo -e "\e[1;33mhello world\e[0m",而更多命令查看转义帮助

    • 注意:想要cat文本显示颜色,则在VIM插入模式下,ctrl+v然后按excape(或者输入027)快捷键,然后后面跟[1;33m文本 ,ctrl+v+快捷键[0m ,则会显示为黄色
    • 容易错的部分:
    1. 一定要在insert模式下按ctrl+v,不然会进入visual block模式
    2. 注意^[[1;33m文本^[[0m ,注意快捷键会加上一个托字符加[ ,相当于echo里面的\033或者\e ,后面还得再加[
    3. 注意控制颜色的数字中间的分隔符是;分号,不是逗号

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

  • 脚本中如果有命令错误,则这一条命令可以不执行,脚本仍然会执行到最后,可以用这个命令来检测每条命令的执行结果
最后修改日期: 2021年7月7日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。