为什么要学习Shell编程
  1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理。
  2)对于JavaEE和Python程序员来说,工作的需要,你的老大会要求你编写一些Shell脚本进行程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。
  3)对于大数据程序员来说,需要编写Shell程序来管理集群。
 Shell是什么
    Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,

      用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

      

Shell脚本的执行方式

  脚本格式要求
    1) 脚本以#!/bin/bash开头
    2) 脚本需要有可执行权限

   编写第一个Shell脚本   

      需求说明
        创建一个Shell脚本,输出hello world!

         

  脚本的常用执行方式
      •方式1(输入脚本的绝对路径或相对路径)
        1)首先要赋予helloworld.sh 脚本的+x权限

        2)执行脚本

          

      •方式2(sh+脚本)
        说明:不用赋予脚本+x权限,直接执行即可。

          

    Shell的变量

        Shell的变量的介绍
          1)Linux Shell中的变量分为,系统变量和用户自定义变量。
          2)系统变量:$HOME、$PWD、$SHELL、$USER等等。

            比如:echo $HOME 等等..

            
          3)显示当前shell中所有变量:set

        shell变量的定义
          •基本语法
            1)定义变量:变量=值
            2)撤销变量:unset 变量

            3) 声明静态变量:readonly变量,注意:不能unset

          •快速入门

            案例1:定义变量A
            案例2:撤销变量A


            案例3:声明静态的变量B=2,不能unset

            案例4:可把变量提升为全局环境变量,可供其他shell程序使用

          •定义变量的规则
            1) 变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
            2) 等号两侧不能有空格
            3) 变量名称一般习惯为大写
         •将命令的返回值赋给变量
              1)A=`ls -la` 反引号,运行里面的命令,并把结果返回给变量A
            2)A=$(ls -la) 等价于反引号

     设置环境变量

        基本语法

          1) export 变量名=变量值(功能描述:将shell变量输出为环境变量)
          2) source 配置文件(功能描述:让修改后的配置信息立即生效)
          3) echo $变量名(功能描述:查询环境变量的值)

          快速入门
            1) 在/etc/profile文件中定义TOMCAT_HOME环境变量
            2) 查看环境变量TOMCAT_HOME的值
            3) 在另外一个shell程序中使用TOMCAT_HOME
            注意:在输出JAVA_HOME 环境变量前,需要让其生效
            source /etc/profile

  位置参数变量

    介绍:当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量
      比如:./myshell.sh 100 200 , 这个就是一个执行shell的命令行,可以在myshell 脚本中获取到参数信息
     基本语法
      $n (功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数,十以上的参数需要用大括号包含,如${10})
      $* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体)
      $@(功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待)
      $#(功能描述:这个变量代表命令行中所有参数的个数)
 
    •应用实例
      案例:编写一个shell脚本positionPara.sh ,在脚本中获取到命令行的各个参数信息。

  预定义变量

      基本介绍
        就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
      基本语法
        $$(功能描述:当前进程的进程号(PID))
        $!(功能描述:后台运行的最后一个进程的进程号(PID))
        $?(功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;

          如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。)
      应用实例
        在一个shell脚本中简单使用一下预定义变量

   运算符
      基本介绍
        学习如何在shell中进行各种运算操作。
      基本语法
        1) “$((运算式))”或“$[运算式]”
        2) expr m + n
          注意expr运算符间要有空格
        3) expr m -n
        4) expr \*, /, % 乘,除,取余
      •应用实例
        案例1:计算(2+3)X4的值
        案例2:请求出命令行的两个参数[整数]的和

    条件判断

        判断语句
          •基本语法
            [ condition ](注意condition前后要有空格)
            #非空返回true,可使用$?验证(0为true,>1为false)
          •应用实例
            [ atguigu ] 返回true
            [] 返回false
            [condition] && echo OK || echo notok 条件满足,执行后面的语句

          •常用判断条件
            1)两个整数的比较
              = 字符串比较
              -lt 小于
              -le 小于等于
              -eq 等于
              -gt 大于
              -ge 大于等于
              -ne 不等于
            2) 按照文件权限进行判断
              -r 有读的权限
              -w 有写的权限
              -x 有执行的权限
            3)按照文件类型进行判断
              -f 文件存在并且是一个常规的文件
              -e 文件存在
              -d 文件存在并是一个目录

            4) 应用实例
              案例1:"ok"是否等于"ok"
              判断语句:
              案例2:23是否大于等于22
              判断语句:
              案例3:/root/shell/aaa.txt 目录中的文件是否存在
              判断语句:

    流程控制

        if 判断
          •基本语法
            if [ 条件判断式];then
               程序
            fi
            或者
            if [ 条件判断式]
              then
              程序
              elif [条件判断式]
              then
              程序
            fi
          注意事项:(1)[ 条件判断式],中括号和条件判断式之间必须有空格(2) 推荐使用第二种方式
          •应用实例
            案例:请编写一个shell程序,如果输入的参数,大于等于60,则输出"及格了",如果小于60,则输出"不及格"

        case语句
            •基本语法
              case $变量名in
                "值1")
                如果变量的值等于值1,则执行程序1
                  ;;
                 "值2")
                如果变量的值等于值2,则执行程序2
                  ;;
                …省略其他分支…
                  *)
                如果变量的值都不是以上的值,则执行此程序
                  ;;
              esac
            •应用实例
              案例1 :当命令行参数是1 时,输出"周一", 是2 时,就输出"周二",其它情况输出"other"

        for循环
            •基本语法1
              for 变量in 值1 值2 值3…
              do
                程序
              done
            •应用实例
              案例1 :打印命令行输入的参数
            •基本语法2
              for ((初始值;循环控制条件;变量变化))
              do
                程序
              done
            •应用实例
              案例1 :从1加到100的值输出显示[这里可以看出$* 和$@ 的区别]

        while循环
            •基本语法1
              while [ 条件判断式]
              do
                程序
              done
            •应用实例
              案例1 :从命令行输入一个数n,统计从1+..+ n 的值是多少?

Linux Shell编程、变量、控制语句的更多相关文章

  1. Linux Shell编程变量赋值和引用

    我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #!/bin/sh  ...  注意:最好使用“! ...

  2. linux shell 编程参考

    #!/bin/bash my_fun() { echo "$#" } echo 'the number of parameter in "$@" is '$(m ...

  3. Linux Shell编程与编辑器使用详解

    <Linux Shell编程与编辑器使用详解> 基本信息 作者: 刘丽霞 杨宇 出版社:电子工业出版社 ISBN:9787121207174 上架时间:2013-7-22 出版日期:201 ...

  4. linux —— shell 编程(文本处理)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 基本文本处理 流编辑器sed aw ...

  5. linux —— shell 编程(编程语法)

    导读 本文为博文linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展.(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行) 目录 再识变量 函数 条件语句 循环语句 ...

  6. linux —— shell 编程(整体框架与基础笔记)

    导读 关于shell编程基础的学习,网上有很多资源,如果在校图书馆应该也有一些教程,所以这里对于零碎的基础不做详细记录,而只是对一些常用的概念.命令与操作做一个简要的记录,以备方便查找. (本文所有语 ...

  7. linux shell编程总结

    linux shell编程总结 本周学习了unix/linux shell编程,参考的是<LINUX与UNIX Shell 编程指南>,David Tansley著:徐焱,张春萌等译,由机 ...

  8. Linux Shell编程参考大全

    本文记录Linux Shell编程中常用基本知识,方便快速入门以及查询使用. 本文主要分为以下几个部分: 一.Shell中的变量 任何编程语言中,有关变量的定义,作用范围,赋值等都是最最基础的知识. ...

  9. Linux Shell编程中的几个特殊符号命令 & 、&& 、 ||

    https://blog.csdn.net/hack8/article/details/39672145 Linux Shell编程中的几个特殊符号命令 & .&& . || ...

  10. 一文学完Linux Shell编程,比书都好懂

    一. Shell 编程 1. 简介 Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务. Shell 既是一种命令语言,又是一种程序设计语言. Shell scr ...

随机推荐

  1. c++静态变量与菲静态变量

    刚开始用C++写程序,遇到了一个很奇怪的问题,就是在类定义的面定义了一个静态成员变量,但在使用时编译器报错称变量不是类的成员. 文件a.h内容: /**********************A.h* ...

  2. 21-py3 发邮件

    Python3 SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. p ...

  3. 对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错。

    对于一个web工程,如果我们复制一个已有的工程粘贴到同一个workspace下,我们除了需要更改工程的名字还需要更改这个新工程的content root,否则会报错.步骤如下: 右键新的工程---&g ...

  4. 关于java项目中的.classpath文件:

    Classpath是Java中的重要概念: 它描述了Java虚拟机在运行一个Class时在哪些路径中加载要运行的类以及运行的类要用到的类 简单的说,就是像操作系统的path 只不过这个classpat ...

  5. vue.js和angular.js的区别

    关于Vue的描述: HTML模版+JSON数据,再创建一个Vue实例,就这么简单 关于Angular的描述: AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态 ...

  6. Mac完整卸载Android Studio的方法

    1.卸载Android Studio,在终端(terminal)执行以下命令: rm -Rf /Applications/Android\ Studio.app rm -Rf ~/Library/Pr ...

  7. windows环境下配置tornado

    1.前言        在网上看过一些在windows下配置tornado的教程,有一些写的十分复杂,让人望而生却.然后我就自己试着在windows下面配置tornado.我发现,方法非常简单,短短几 ...

  8. (字符串 KMP)Blue Jeans -- POJ -- 3080:

    链接: http://poj.org/problem?id=3080 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88230#probl ...

  9. 使用VMWare12.0安装Ubuntu系统

    使用VMWare12.0安装Ubuntu系统 Vmware12的虚拟机的文档说明: http://pubs.vmware.com/workstation-12/index.jsp#com.vmware ...

  10. Java异常封装

    转载: Java异常封装 Java里面的异常在真正工作中使用还是十分普遍的.什么时候该抛出什么异常,这个是必须知道的. 当然真正工作里面主动抛出的异常都是经过分装过的,自己可以定义错误码和异常描述. ...