shell脚本(一)

 本周是来马哥教育的第四周,本周重点是shell脚本的编写,本篇博客也是以shell脚本的简述为主。

一.shell脚本的概念及意义

    shell脚本是linux下的一种编程方式,百度百科给出这样的释义:脚本(shell script)是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。说白了,就是为了解决linux的实际问题,临时写的一个小程序来完成当前的工作,如果需要多次使用,还能保存下来循环使用。

二.脚本的规范

    脚本使用了shebang机制,即这样的格式:!#/bin/bash、!#/use/bin/python。需要简单的进行shell脚本的解释。下面举一个样例:
    #!/bin/bash
    # ——————————————
    # Filename: hello.sh
    # Revision: 1.1
    # Date: 2017/08/05
    # Author: Mr.Dong
    # Email: Dong@gmail.com
    # Website: www.magedu.com
    # Description: This is the first script
    # ——————————————
    echo “hello world”
    利用这些信息,可以很快知道这个脚本的用处,以便于工作的使用。
    在运行的时候可以使用下面两条命令进行脚本调试
    bash -n hello.sh 来查看脚本的语法错误
    bash -x hello.sh 可以查看脚本的执行步骤

三.变量

    1.本地变量
        本地变量只对当前shell有效,对子shell无效(SHLVL查看是几级shell)。
        变量赋值:name=’value’
        字符串赋值:name=”root”
        变量引用:name=”$USER”
        命令引用:name=COMMAND name=$(COMMAND)
        显示已定义的所有变量:set
        删除变量:unset name
    2.环境变量
        环境变量对当前SHELL及其子SHELL均有效。
        变量的声明和赋值命令: 
        export name=VALUE
        declare -x name=VALUE
        变量的引用:$name,${name}
        显示所有的环境变量命令:
        env printenv export declare -x
        bash自带环境变量:
        PATH SHELL USER UID HOME PWD SHLVL LANG MAIL HOSTNAME HISTSIZE
    3.只读变量
        声明只读变量:
        readonly name 
        declare -r name
        查看只读变量: readonly -p
    4.位置变量
        $1, $2, … :对应第1 、第2 等参数,shift [n] 换位置
        $0:  命令本身
        $:  传递给脚本的所有参数,全部参数合为一个字符串
        $@:  传递给脚本的所有参数,每个参数为独立字符串
        $#:  传递给脚本的参数的个数
        $@ $
  只在被双引号包起来的时候才会 有 差异
        set — 

四.算术运算与逻辑运算

    1.算术运算
      算数运算符:+ – * / %(取余) **(乘方)
      常用的运算:
        (1) let var= 算术表达式
        (2) var=$[ 算术表达式]
        (3) var=$(( 算术表达式))
        (4) var=$(expr arg1 arg2 arg3 …)
        (5) declare –i var =  数值
        (6) echo ‘ 算术表达式’ | bc
      产生随机数命令:echo $[$RANDOM%number]  0-number之间的随机数
      赋值运算:+= -= *= /= %=
      自增和自减:
      let var+=1
        let var++
      let var-=1
      let var–
    2.逻辑运算
      true=0 false=1
      与 1&&1=1 1&&0=0 0&&1=0 0&&0=0
      或 1||1=1 1||0=1 0||1=1 0||0=0
      非 !1=0 !0=1

五.test命令

    test命令是shell环境中测试条件表达式的实用工具。
    例如:test “$A” == “$B” && echo “Strings are equal”
    [ “$A” == “$B” ] && echo “Strings are equal”
    这两种表述表达同一种意思。
    [[  ]]表示支持正则表达式
    数值比较:         字符串比较:
     -gt 是否大于      >
     -ge 是否大于等于  >=
     -eq 是否等于      ==
     -ne 是否不等于    !=
     -lt 是否小于      <
     -le 是否小于等于  <=

本篇博客只是对本周的shell脚本的学习的总结,后面还有拔高部分的学习,未完待续~

原创文章,作者:Mr.DONG,如若转载,请注明出处:http://www.178linux.com/83768

(0)
Mr.DONGMr.DONG
上一篇 2017-08-05
下一篇 2017-08-05

相关推荐

  • OPENSSL加密技术及私有CA的搭建

    加密方式有对称加密 非对称加密 单向加密 对称加密:     加密和加密都用同一个对称密钥,但是,这种加密方法存在一定问题,就是密钥传输时,容易被盗窃。还有密钥管理困难,对称加密的方法:DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5。   非对称加密: 公钥…

    Linux干货 2015-08-17
  • 上古神器之vim

    sed 前言:前面学到了文本处理三剑客之一grep,但是grep在有些时候显得力不从心,我们需要一款针对行操作的处理工具,没错,这就是sed流编辑器。 sed用法提炼: sed 's/(text1)(text2)(text3)/\1\2\3/'  vim 前言:强大的Linux如果没有一款疯狂的编辑器,常用的编辑操作会…

    Linux干货 2016-08-12
  • Linux 基础命令

    时间命令:     date:         date [option].. [+format]:显示      [root@localhost ~]# dateThu Feb 25 14…

    Linux干货 2016-02-28
  • 高级文件系统管理之磁盘配额及RAID的运用

    本章内容 设定文件系统配额 设定和管理软RAID设备 一,概述 配置配额系统: 综述 在内核中执行 以文件系统为单位启用 磁盘配额最小单位是以文件系统为单位启用,就是一个挂载点,而不能以目录为单位 对不同组或者用户的策略不同 根据块或者节点进行限制 执行软限制(soft limit) 硬限制(hard limit) 初始化 分区挂载选项:usrquota、g…

    Linux干货 2016-09-07
  • N26 第七周作业

    1、创建一个10G分区,并格式为ext4文件系统;(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@localhost ~]# fdisk /dev/sdb Welcome to fdisk (util-linux 2.23.2). Changes will remain in mem…

    Linux干货 2017-02-07
  • 三问:linux操作系统安全加固

    三问:linux操作系统安全加固 1.为什么要进行安全加固?     安全加固的重要性不言而喻。我这里把操作系统同马斯洛需求层次做了个类比,如有不恰当之处,还请指教。同人一样,操作系统也有自己的生理需求,对于人来说生理需求无非吃喝拉撒等,而对于操作系统来说它的生理需求又是什么了?我个人认为应该是底层硬件的配置,内核的驱…

    Linux干货 2017-03-30