• linux ——shell 脚本


                                                      linux—shell 脚本  精简基础                 2018/10/30 13:20:18

    一、1 为什么学习shell编程

    Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚本的内容。每一个合格的Linux系统管理员或运维工程师,都需要熟练的编写Shell脚本语言,并能够阅读系统及各类软件附带的Shell脚本内容。只有这样才能提升运维人员的工作效率,适应日益复杂的工作环境,减少不必要的重复工作,从而为个人的职场发展奠定较好的基础。

    2、linux正则表达式的三剑客分别是【grep , sed , awk]

    3、默认脚本一般都是.sh结尾

    4、脚本的固定格式必须有的

    1>——#!/bin/bash  解释器

    2>——#      -*-   coding:utf-8   -*-

    3>——#    author:wangxiong

    二、什么是shell?

    • Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,输出屏幕返回给用户。
    • 这种对话方式可以是: 
      1)交互的方式:从键盘输入命令,通过/bin/bash的解释器,可以立即得到shell的回应 
      2)非交互的方式:脚本

    下图黄色部分就是命令解释器shell

    屏幕快照 2017-02-24 下午1.35.04.png-226.5kB

     

    Shell的英文意思是贝壳的意思,命令解释器Shell像一个贝壳一样包住系统核心。

     

    三、Shell执行命令分为两种方式: 
    - 内置命令:如讲过的cd,pwd,exit和echo等命令,当用户登录系统后,shell以及内置命令就被系统载入内存,并且一直运行。 
    - 一般命令:如ls,磁盘上的程序文件-->调入-->执行命令

     

     四、什么是Shell 脚本

     

    当linux命令或语句不在命令行下执行(严格说,命令行也是shell),而是通过一个程序文件执行时,该程序就被称为Shell脚本或Shell程序 
    用户可以在Shell脚本中敲入一系列的命令及语句组合。这些命令,变量和流程控制语句等有机的结合起来就形成一个功能强大的Shell脚本。

    脚本注释

    在Shell脚本中,跟在#后面的内容表示注释。注释部分不会被执行,仅给人看。注释可以自成一行,也可以跟在命令后面,与命令同行。要养成写注释的习惯,方便自己与他人。

    最好不用中文注释,因为在不同字符集的系统会出现乱码。

     

     Shell脚本的执行

     

     

     

    五、 Shell脚本执行的四种方式

     

    1)bash scripts-name或sh script-name(推荐使用)

     

    这种方法是当脚本本身没有可执行权限时常使用的方法。

     

    2)path /script-name 或./scripts-name(全路径或当前路径执行脚本) 
    这种方法首先需要给脚本文件可执行权限。

     

    3)source scripts-name或. scripts-name #注意“.”点号,且点号后有空格。 
    source 或.在执行这个脚本的同时,可以将脚本中的函数和变量加载到当前Shell。不会产生子shell。又有点像nginx的include功能。

     

     

     

    六、Shell脚本开发的规范和习惯

    1)开头指定脚本解释器 
    2)开头加版本版权等信息,可配置~/.vimrc文件自动添加 
    3)脚本不要用中文注释,尽量用英文注释 
    4)脚本以.sh为扩展名 
    5)放在统一的目录 
    6)代码书写优秀习惯 
    a,成对的内容一次性写出来,防止遗漏,如[],'',""等 
    b,[]两端要有空格,先输入[]退格,输入2个空格,再退格写。 
    c, 
    流程控制语句一次书写完,再添加内容。

     if 条件
     
    then 内容
    fi

    d,通过缩进让代码易读 
    f,脚本中的引号都是英文状态下的引号,其他字符也是英文状态。

     

     变量类型

     

    七、变量分为两类: 
    1)环境变量(也可称为全局变量);可以在创建他们的Shell及派生出来的子shell中使用。环境变量又可以分为自定义环境变量和bash内置的环境变量。

     

    2)局部变量(普通变量):只能在创建他们的shell函数或shell脚本中使用,还记得前面的$user?我们创建的一般都是普通变量。

     

     

     

     环境变量

     

    • 环境变量用于定义Shell的运行环境,保证Shell命令的正确执行,Shell通过环境变量来确定登录用户名,命令路径,终端类型,登录目录等,所有的环境变量都是全局变量,可用于所有子进程中,包括编辑器,shell脚本和各类应用。但crond计划任务除外,还需要重新定义环境变量。
    • 环境变量可以在命令行中设置,但用户退出时这些变量值也会丢失,因此最好在用户家目录下的.bash_profile文件中或全局配置/etc/bashrc,/etc/profile文件或者/etc/profile.d/目录中定义。将环境变量放入profile文件中,每次用户登录时这些变量值都将被初始化。
    • 通常,所有环境变量均为大写。环境变量应用于用户进程前,都应该用export命令导出。例如:export chensiqi=1
    • 有一些环境变量,比如HOME,PATH,SHELL,UID,USER等,在用户登录之前就已经被/bin/login程序设置好了。通常环境变量定义并保存在用户家目录下的.bash_profile或/etc/profile文件中。

     

     

     局部变量

    定义局部变量

    局部变量在用户当前的shell生存期的脚本中使用。例如,局部变量chensiqi取值为chensiqi098,这个值只在用户当前shell生存期中有意义。如果在shell中启动另一个进程或退出,局部变量chensiqi值将无效。

    普通字符串变量定义

     1、变量名=value2、变量名=‘value’3、变量名=“value

    shell中变量名及变量内容的要求

    • 一般是字母,数字,下划线组成,且以字母开头。如chensiqi,chensiqi123,chensiqi-training。变量的内容,可以使用单引号或双引号印起来,或不加引号。

    • 虽然变量可以以下划线开头,但类似这种变量都是比较特殊的,都是系统自己用的。我们尽量少用。

    脚本中符号的意义;

    if 如果

    elif 否则如果

    then 那么

    fi 结尾

    -eq equal等于

    -ne not equal 不等于

    -gt greater than大于

    -ge greater equal大于等于

    -lt less than小于

    -le less equal 小于等于

    read 交互命令

    num 变量名

    $#;取参数的个数

    $*;把所有参数列出来

    $@把所有参数列出来

    $1;第一个参数

    $2;第二个参数

    $3;第三个参数

    $4;第4个参数(后面的$5一次类推)

     

     

    不同语言脚本的开头写法

     

     #!/bin/sh
    #!/bin/bash
    #!/usr/bin/awk
    #!/bin/sed
    #!/usr/bin/tcl
    #!/usr/bin/expect
    #!/usr/bin/perl
    #!/usr/bin/env python
    shell脚本yum仓库安装
    #!/bin/bash
     
     
    umount /dev/sr0
    [  -d /media/cdrom  ]  ||  mkdir -p /media/cdrom
    if   [$?  -ne 0  ];then
        echo "请插入光盘“
        exit
    fi
    [  -d /etc/yum,repos.d ] || mkdir -p /etc/yum.repos,d
    cd /etc/yum.repos.d && \
    mv * /tmp/
    cat > /etc/yum.repos.d/local.repo << LOL
    [  local ]
    name=local
    baseurl=file:///media/cdrom
    gagcheck=0
    enabled=1
    LOL
    yum -y clean all && echo "yum clean"
    yum makecache && echo "安装完成”
     
     
     

     

     

     

           

     

     

  • 相关阅读:
    网络兼职轻松赚
    微信H5支付demo
    支付宝H5支付demo
    笔记本安装SSD固态硬盘详细的优化设置
    JQuery的AJAX
    第二次面试
    存储过程的总结
    SQl数据操作和查询
    面对考试毫无畏惧的SSH
    掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)
  • 原文地址:https://www.cnblogs.com/jijiguowang/p/9876765.html
Copyright © 2020-2023  润新知