zoukankan      html  css  js  c++  java
  • shell基础

    shell脚本基础

    一、一些编程的基础概念

    1.程序=指令+数据
    2.程序的编程风格:

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

    3.编程语言:

    • 低级:汇编
    • 高级:
      • 编译:高级语言-->编译器-->目标代码
        java,C#
      • 解释:高级语言-->解释器-->机器代码
        shell, perl, python

    4.编程逻辑处理方式:

    • 顺序执行
    • 循环执行
    • 选择执行

    5.shell编程:过程式、解释执行
    编程语言的基本结构:

    • 各种系统命令的组合
    • 数据存储:变量、数组
    • 表达式: a + b
    • 语句:if

    6.shell脚本的用途有:

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

    二、shell脚本的格式要求

    格式要求:首行shebang机制

    #!/bin/bash # 表示表示在执行脚本时内部会使用该路径的bash去执行。
    #!/usr/bin/python # 表示表示在执行脚本时内部会使用该路径的Python去执行。
    #!/usr/bin/perl

    2.1如何创建shell脚本

    第一步:

    • 第一行必须包括shell声明序列:#!
      #!/bin/bash
    • 添加注释
      注释以#开头

    第二步:运行脚本

    • 给予执行权限,在命令行上指定脚本的绝对或相对路径
    chmod +x abc.sh  # 给脚本添加执行权限
    ./abc.sh   #执行当前目录(相对路径)
    或者
    /tmp/abc.sh  #绝对路径方式
    

    注意:给予执行权限后,直接在命令行输入脚本命令也不会像cd、cat等命令直接执行,因为该shell脚本不在$PATH路径中,而hash是在$PATH寻找命令。因此要想直接输入命令就执行,需要将shell脚本放在$PATH路径下:
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    • 直接运行解释器,将脚本作为解释器程序的参数运行
    bash  /data/hello.sh  
    或  
    cat /data/hello.sh | bash 
    

    2.2脚本规范

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

    脚本的基本结构:
    #!SHEBANG
    CONFIGURATION_VARIABLES
    FUNCTION_DEFINITIONS
    MAIN_CODE

    示例:

    #!/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脚本中的命令行:
    ①如果是某个行的命令错误,那么其他的命令仍继续执行
    ②如果是语法错误,那么后续的命令直接终止执行
    所以,我们在写完脚本后,先执行上面两个命令进行调试!

  • 相关阅读:
    [ Algorithm ] N次方算法 N Square 动态规划解决
    [ Algorithm ] LCS 算法 动态规划解决
    sql server全文索引使用中的小坑
    关于join时显示no join predicate的那点事
    使用scvmm 2012的动态优化管理群集资源
    附加数据库后无法创建发布,error 2812 解决
    浅谈Virtual Machine Manager(SCVMM 2012) cluster 过载状态检测算法
    windows 2012 r2下安装sharepoint 2013错误解决
    sql server 2012 数据引擎任务调度算法解析(下)
    sql server 2012 数据引擎任务调度算法解析(上)
  • 原文地址:https://www.cnblogs.com/sstjustdoit/p/10043494.html
Copyright © 2011-2022 走看看