• shell脚本编程基础


       最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用。

    一、shell脚本基础

       shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正则表达式,管道命令以及重定向向等功能,以达到我们所想要的处理目的。它的基本用途有:

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

    二、创建shell脚本

    第一步、使用文本编辑器来创建文本文件

    第一行必须包括shell 声明序列:#! 也就是我们通常所说的“蛇棒”,如:`#!/bin/bash` 
    添加注释,注释以#开头,注释行会被解释器忽略。
    

    第二步、运行脚本

    给予执行权限,在命令行上指定脚本的绝对或相对路径
    直接运行解释器,将脚本作为解释器程序的参数运行
    

    脚本示例:

    #!/bin/bash
    # ------------------------------------------
    # Filename: hello.sh
    # Revision: 1.0
    # Date: 2017/09/16
    # Author: fly
    # Email: 
    # Description: This is the first script
    # ------------------------------------------
    echo “hello world”
    
    

    三、脚本调试

    1.检测脚本的语法错误
    bash -n /path/to/some_script
    只检测,不执行脚本,并且不能检测脚本的逻辑错误
    
    2.调试执行
    bash -x /path/to/some_script
    逐行执行脚本,便于直接判断脚本错误,但可能会有些不安全
    

    四、常用变量

    自定义变量

    根据变量的生效范围,将自定义变量分为:

    本地变量: 仅对当前SHELL有效,对子SHELL也无效
    环境变量:对当前SHELL及其子SHELL均有效。
    局部变量:生效范围为当前shell、进程中某代码片断( 通常指函数)
    
    

    使用自定义变量前,我们需要对变量进行赋值,下面是变量命名规则:

    1)使用变量无需事先声明
    2)首个字符必须为字母(a-z,A-Z)
    3)中间不能有空格,可以使用下划线(_)
    4)不能使用标点符号
    5)不能使用bash里的关键字(可用help命令查看保留关键字)
    6)需要给变量赋值时,可以这么写:
    7)变量名=值
    8)取一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 )
    

    例:

    A=1 (本地变量)
    export B=2(环境变量)
    local C=3(局部变量)
    

    使用变量结束后,可以用unset name删除自定义变量

    位置变量

    位置变量:在脚本代码中调用通过命令行传递给脚本的参数

    $1, $2, ... :对应第1 、第2 等参数,shift [n] 换位置
    $0:  命令本身
    $*:  传递给脚本的所有参数,全部参数合为一个字符串
    $@:  传递给脚本的所有参数,每个参数为独立字符串
    $#:  传递给脚本的参数的个数
    $@ $*只在被双引号包起来的时候才会有差异
    

    可以用set -- 清空所有位置变量

    特殊变量

    变量 含义
    $? 变量保存最近的命令退出状态
    $0 当前脚本的文件名
    $# 传递给脚本或函数的参数个数
    $*/$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,$@与$* 稍有不同
    $$ 当前Shell进程ID,对于 Shell 脚本,就是这些脚本所在的进程ID

    请看下面脚本:

    #!/bin/bash
    echo "File Name: $0"
    echo "First Parameter : $1"
    echo "First Parameter : $2"
    echo "Quoted Values: $@"
    echo "Total Number of Parameters : $#"
    

    运行结果:

    ./test.sh a b  
    File Name : test.sh
    First Parameter : a
    Second Parameter : b
    Quoted Values: a b
    Total Number of Parameters : 2
    

    算数运算

    let运算命令
    #!/bin/bash
    a=2;
    b=3;
    let sum=a+b
    echo $sum
    
    [ ]运算方法
    #!/bin/bash
    a=2;
    b=3;
    sum=$[a+b]
    echo $sum
    
    (( ))运算方法
    #!/bin/bash
    a=2;
    b=3;
    sum=$((a+b))
    echo $sum
    
    expr运算方法
    a=1
    b=2
    sum=$(expr $a + $b)
    echo $sum
    
    
    精密计算
    echo "1*2*3"|bc 
    
    

       今天对shell脚本就介绍到这里,下次继续对shell脚本进行整理,再见。

  • 相关阅读:
    tensorflow 1
    BAT变量中的百分号学习
    mysqldump: unknown option '--no-beep'
    mysql数据库文件默认保存目录(windows)
    mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法
    淘宝开源Web服务器Tengine安装教程
    Solr开发文档
    spring线程池配置
    Host 'XXX' is not allowed to connect to this MySQL server 解决方案/如何开启MySQL的远程帐号
    Redis应用场景
  • 原文地址:https://www.cnblogs.com/flylinux/p/7529944.html
Copyright © 2020-2023  润新知