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

相关推荐

  • 网络管理

    网络管理 本章内容 网络概念 OSI模型 网络设备 TCP/IP IP地址 配置网络 实现网络组 测试网络 网络工具 为linux网卡配置ip地址,不是给网卡配置地址,是给内核的网络功能配置,地址是属于内核。为内核配置即时生效,修改配置文件,是永久生效。ifconfig 配置信息,会立即生效,但是重启网络服务或主机,都失效。网络服务/etc/init.d/n…

    Linux干货 2016-09-05
  • iptables基础概念

    iptables基本概念梳理 前言 netfilter/Iptables (其中包括netfilter和Iptables两个组件)组 成了Linux平台下的包过滤防火墙,它与大多数的Linux自带软 件一样,这个防火墙是免费提供的,它可以代替昂贵的企业级 防火墙来解决实际问题与实际方案,完成封包过滤,封包重定 向和网络地址转换等功能。 一、工作原理 数据包从…

    Linux干货 2016-12-19
  • linux用户和用户组

    一、用户和组 1、用户账号类型 在Linux系统中,根据系统管理的需要将用户账号分为不同的类型,其拥有的权限、担任的角色也各不相同。主要包括超级用户、普通用户和程序用户。 【超级用户】:root用户是Linux系统中默认的超级用户账号,对本主机拥有最高的权限,类似于Windows系统中的Administrator用户。只有当进行系统管理、维护任务时,才建议使…

    Linux干货 2017-07-22
  • 第四周作业

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

    Linux干货 2017-03-04
  • 特殊权限

    特殊权限 文件特殊权限 一、SUID(4) SUID:当s这个标志出现在文件所有者的x权限上时,就被称作SUID。 SUID的功能和限制:1、仅仅对二进制程序有效; 2、执行者对程序需要X的执行权限; 3、本权限仅仅在执行该程序的过程中有效; 4、执行者将具有该程序所有者的权限。 5、SUID仅仅可以用在二进制程序上,…

    Linux干货 2016-08-05
  • mysql备份之mysqldump

    mysql备份之mysqldump 注意:备份文件和二进制日志文件不能与mysql放在同一磁盘下 节点1 1、节点1上修改mysql配置文件,开起二进制日志保存 这里我将二进制日志放在/data/mysql/目录下,/data/是我创建的另外一个lvm磁盘,本来想直接放在/data/下,发现无法启动mysql,所以建议还是放在/data/mysql中 [ro…

    Linux干货 2016-07-19