为什么要学习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. [z]hadoop生态系统

    http://developer.51cto.com/art/201311/415639_all.htm

  2. 添加普通用户为sudo用户

    https://www.linuxidc.com/Linux/2017-01/139361.htm 1.打开sudoers文件 切换到root用户下,cd root,运行visudo命令,visudo ...

  3. popupWindow自适应大小

    // popupWindow自适应大小 popupWindow = new PopupWindow(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP ...

  4. eclipse的thrift插件

    插件网址为:http://thrift4eclipse.sourceforge.net/en/install.html,经测试对Eclipse 4.4.2也有效: Eclipse 4.4.2上的安装步 ...

  5. 三种调用WCF服务的代码

    wsHttpBinding,Massage UserName认证 static void Main(string[] args) { //使用服务引用方式生成的Client调用服务,使用自动生成的配置 ...

  6. HDU1879 继续畅通工程 2017-04-12 19:12 50人阅读 评论(0) 收藏

    继续畅通工程 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submis ...

  7. OpenGL中的需要注意的细节问题

    OpenGL中的需要注意的细节问题 1. 虽然我们使用Windows的BMP文件作为纹理时,一般是蓝色的像素在最前,其真实的格式为GL_BGR而不是GL_RGB,在数据的顺序上有所 不同,但因为同样是 ...

  8. Android-自定义开关(ViewGroup版)

    虽然实现自定义开关,通常情况下都是继承View,比较合理方便快捷一些 但是我今天想去继承ViewGroup来实现自定义开关来玩玩 效果图: 布局代码: <!-- 自定义开关ViewGroup版 ...

  9. 在Github注册账户

    https://github.com/JasonHaoz

  10. Provider 模式

    Provider 模式:为一个API进行定义和实现的分离. 常见场景:DBPrider切换,第3方集成API切换 以发邮件为例: Email Provider Config: public abstr ...