zoukankan      html  css  js  c++  java
  • shell编程介绍

    1.什么是shell?

    Shell是一个命令解释器,它的作用是解释执行用户输入 的命令及程序等,用户输入一条命令,Shell就解释执行 一条。这种从键盘一输入命令,就可以立即得到回应的 对话方式,被称之为交互的方式。 Shell存在于操作系统的最外层,负责直接与用户对话, 把用户的输入解释给操作系统,并处理各种各样的操作 系统的输出结果,输出到屏幕返回给用户,当我们输入 系统用户名和密码,登录到Linux后的所有操作都是由 Shell解释并执行的


    2.什么时候shell脚本?

    当命令或程序 语句不在命令行下执行,而是通过一个程序文件执行 时,该程序就被称为Shell脚本。如果在Shell脚本里内置 了很多条命令、语句及循环控制,然后一次性把这些命 令执行完,这种通过文件执行脚本的方式,称为非交互 的方式。Shell脚本类似于DOS系统下的批处理程序。用户 可以在Shell脚本中敲入一系列的命令及命令语句组合。 这些命令、变量和流程控制语句等有机地结合起来就形 成了一个功能强大的Shell脚本
    版本1:清除日志脚本

    cd /var/log
    cat /dev/null >messages
    echo "Logs cleaned up"
    

    版本2:更完善的清除日志脚本(含命令,变量和控制语句)

    #!/bin/bash
    LOG_DIR=/var/log
    ROOT_UID=0
    第一步:必须是root用户才能运行此脚本
    if [ $UID -ne $ROOT_UID ]
    then
       echo "Must be root to run this script"
       exit 1
    fi
    第二步:成功切换目录,否则给出提示并终止脚本运行
    cd ${LOG_DIR} || {
       echo "Cannot change to necessary directory"
       exit 1
    }
    第三步:成功清理日志,给出正确提示
    cat /dev/null > messages && {
       echo "Logs cleaned up"
       exit 0
    }
    第四步:通关或失败,给出相应提示
    echo "Logs cleaned fail"
    exit 1
    

    2.1 shell脚本的分类

    2.1.1 Bourne shell

    Bourne shell又包括Bourne shell (sh)、Korn shell (ksh)、Bourne Again Shell(bash)三种类型,重点是Bourne Again Shell(bash)。
    

    Bourne Again Shell(bash)

    Bourne Again Shell即bash由GNU项目组开发,主要目标是与 POSIX标准保持一致,同时兼顾对sh的兼容,bash从csh和 ksh借鉴了很多功能,是各种Linux发行版默认配置的Shell, 在Linux系统上的/bin/sh往往是指向/bin/bash的符号链接。 虽然如此,bash和sh还是有很多的不同,一方面,bash扩展 了一些命令和参数,另一方面,bash并不完全和sh兼容,它 们有些行为并不一致,但大多数企业运维的情况下区别不 大,特殊场景可以使用bash替代sh

    2.1.2 C shell

    C shell又包括csh、tcsh两种类型。csh由Berkeley 大学开发,随BSD UNIX发布,它的流程控制语句 很像C语言,支持很多Bourne Shell所不支持的功 能,例如:作业控制、别名、系统算术、命令历 史、命令行编辑等。tcsh是csh的增强版,加入 了命令补全等功能,在FreeBSD、Mac OS X等系 统上替代了csh。

    2.2 Shell脚本语言和3P语言对比

    Shell脚本语言的优势在于处理偏操作系统底层的 业务,例如:Linux系统内部的很多应用,对于 一些常见的企业业务,使用Shell开发会更简单 快速,例如:让软件一键自动化安装、优化,监 控报警脚本,软件启动脚本,日志分析脚本等, 虽然PHP/Python语言也能够做到,但是,考虑到 掌握难度、开发效率、开发习惯等,它们可能就 不如用Shell脚本语言流行及有优势了。对于一些 常规的业务应用,使用Shell更符合Linux运维简 单、易用、高效的三大基本原则
    PHP语言
    PHP是网页程序语言,也是脚本语言。是一款更注 于Web页面开发(前端展示)的语言,例如: wordpress、dedecms、discuz等著名开源产品都是用 PHP语言开发的
    Perl语言

    Perl脚本语言,语法灵活、复杂,缺点是不易读, 团队协作困难,存世的大量相关程序软件(比如, xtrabackup热备工具、MySQL MHA集群高可用软件 等都有Perl语言的身影)。
    Python语言

    Python是当下流行的语言,不但可以用于脚本程序 开发,也可实现Web程序开发(例如:CMDB管理系 统),还可以做软件开发(OpenStack)、游戏开 发、大数据开发、移动端开发。

    2.3 常用操作系统的默认Shell

    CentOS和Red Hat下默认是Bourne Again Shell (Bash)
    AIX下默认是Korn Shell(ksh)
    Solaris和FreeBSD下默认是Bourne shell(sh)

    2.4 shell脚本的建立

    1.脚本的第一行
    一个规范的Shell脚本在第一行会指出由哪个程序(解释 器)来执行脚本中的内容,这一行内容在Linux bash编程 中一般为: #!/bin/bash或#!/bin/sh #<==255个字符以内
    2.bash和sh的区别
    早期的bash与sh稍有不同,它还包含了csh和ksh的特色, 但大多数脚本都可以不加修改地在sh上运行。
    3.需要注意的地方
    CentOS和Red Hat Linux下默认的Shell均为bash。因此,在 写Shell脚本的时候,脚本的开头即使不加#!/bin/bash, 它也会交给bash解释。如果写脚本不希望使用系统默认 的Shell解释,那么就必须要指定解释器了。否则脚本文件执行的结果可能就不是你想要的。
    4.Shell脚本的注释
    #号后面表示注释

    2.5 shell脚本的四种执行方法

    1.bash script-name或sh script-name
    这是当脚本文件本身没有可执行权限(即文件权限属性x 位为-号)时常使用的方法,或者脚本文件开头没有指定 解释器时需要使用的方法
    2.path/script-name或./script-name
    指在当前路径下执行脚本(脚本要有执行权限),需要 先将脚本文件的权限改为可执行(即文件权限属性加x 位),具体方法为chmod +x script-name。然后通过脚本 绝对路径或相对路径就可以直接执行脚本了
    3.source script-name或. script-name
    4.sh<script-name或cat scripts-name|sh

    2.5.1 bash或sh与source或.执行脚本的区别

    source或.执行脚本,相当于在一个shell下执行脚本,互相可以调用
    bash或sh执行脚本,相当于开启了一个新的shell或者说开启了一个子shell

    2.5.2 shell脚本的执行过程

    2.6 shell脚本编程规范和习惯

    1.开头加脚本解释器 
    2.附带作者及版权信息 
    3.脚本扩展名为*.sh 
    4.脚本存放在固定的目录下 
    5.脚本中不用中文 
    6.成对的符号一次书写完成 
    7.循环格式一次性输入完成
    

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    rabbitmq-高级(死信队列)
    rabbitmq-高级(TTL过期时间)
    springboot整合rabbitmq(topic主题模式)
    springboot整合rabbitmq(direct路由模式)
    glide图片加载库
    自己封装的OKhttp请求
    手机上搭建微型服务器
    listview实现点击条目上的箭头展开隐藏菜单。
    recycleview + checkbox 实现单选
    recycleview中使用checkbox导致的重复选中问题
  • 原文地址:https://www.cnblogs.com/yjiu1990/p/10748217.html
Copyright © 2011-2022 走看看