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 11:23
下一篇 2017-08-05 14:21

相关推荐

  • 制作python模块安装包[原创]

     python的第三方模块越来越丰富,涉及的领域也非常广,如科学计算、图片处理、web应用、GUI开发等。当然也可以将自己写的模块进行打包或发布。一简单的方法是将你的类包直接copy到python的lib目录,但此方式不便于管理与维护,存在多个python版本时会非常混乱。现介绍如何编写setup.py来对一个简单的python模块进行打包。 一、…

    Linux干货 2015-03-27
  • 分布式文件系统MogileFS

    1、分布式系统的目标:加强A、P,在C上进行妥协     BASE模型 CAP理论: C:Consistency(一致性)  任何一个读操作总是能够读取之前完成的写操作。 A:Availability(可用性) 每一次操作总是能够在确定的时间返回。 P: Partition Tolerance ( 分区容错性 )   在出现网络分区的情况下,仍然能够满足一致…

    2017-11-23
  • Systemd——CentOS7的init

    Systemd:     POST –> Boot Sequeue(BIOS) –> Bootloader(MBR) –> kernel(ramdisk) –> rootfs –> /sbin/init init:   &nbsp…

    Linux干货 2016-09-20
  • grep、egrep、vim练习

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及内部文件的属组和其它用户均没有任何访问权限。         [root@localhost ~]# install -d -m 600&nb…

    Linux干货 2016-11-18
  • Linux下的SSH端口转发

    通常情况下两个不同的网络之间总会开放某一些特定的端口用于通讯使用,而SSH所使用的22端口通常就在开放之列。基于SSH的端口转发就是利用SSH作为中间的代理,达到绕过两个网络之间的限制,顺利的进行任意的端口的访问。端口转发可以分为三种,正向端口转发,反向端口转发和动态端口转发。为了演示这三种端口转发方式的用法我们先假设存在有2个网域Office和Prod,在…

    Linux干货 2015-02-09
  • 第四周:/etc/passwd、/etc/group文件熟悉及配合grep使用正则表达式

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@wlm ~]# useradd tuser1 [root@wlm ~]# cp -r etc/skel/ /home/tuser1/…

    Linux干货 2016-10-13