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

相关推荐

  • N25第5周作业(grep和find使用)

    显示当前系统上root, fedora 或user1的默认shell 找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello(); 使用echo命令输出一个绝对路径,使用grep取出基名,扩展取出其路径名 找出IFCONIFG命令结果的1-255之间的数字 挑战题:写一个模式,能匹配出合理的IP地址 挑战题…

    Linux干货 2016-12-30
  • 我的第一篇博客

        对于一个连日记都懒得写的人来说,写博客博客还真是一个难题。但是为了能让自己有所进步有所提高、更是为了记录自己逐步成长的过程,还是下定决心记录下在接下来的日子里的点点滴滴。当然,这点点滴滴指的是 —— 知识     我想刚学linux的新手眼里除了图形化就只有黑白两种颜色了吧!但是为了提高自己…

    Linux干货 2017-07-15
  • lvs-dr模型

    dr 模型 1、 directory ,node1 ,node2 三台主机都是一块网块, 并且网卡都为桥接,且node1,nod2,不需要指定网关 在director主机中执行   #ip addr add 192.168.1.20/32 dev ens33 # ipvsadm -A -t 192.168.1.20:80 -s rr # ipvsa…

    Linux干货 2017-08-26
  • 也许你根本不会用百度搜索

    搜索引擎可以帮助使用者在Internet上找到特定的信息,但它们同时也会返回大量无关的信息。但是如果多使用一些技巧,你将发现搜索引擎会花尽可能少的时间找到你需要的确切信息。 1.简单查询 这个就是最简单便捷的使用方式,其实也是我们大多数人平时使用百度或者其他搜索引擎的方式。比如你想查培训学校,那么你的第一反应肯定就是在百度里输入【挖掘机】【挖掘机学校】【蓝翔…

    2015-03-02
  • PHP进阶知识总结

    周末梳理了下这段时间看书的一些知识点,进步的过程不仅要实践,还要安排多看书、思考、总结。 只针对知识点进行了罗列和简单说明,很多细节还未整理好,待后面再专门详细写。   基础易忽略概念   PHP是一个支持面向对象开发的语言,而不是一个纯面向对象的语言 PHP5中保留了对var的支持,但会将var自动转换为public 类型检查函数: i…

    Linux干货 2015-03-10
  • bash脚本之for循环和while循环及包管理

    一.概述 上一章剩余内容 压缩工具 cpio 复制从或到文件 cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。 cpio[选项] > 文件名或者设备名 cpio[选项] < 文件名或者设备名 选项 -o 将文件拷贝打包成文件或者将文件输出到设备上 -i解包,将打包文件解压或将…

    Linux干货 2016-08-24