zoukankan      html  css  js  c++  java
  • Linux Shell脚本编程

    ⒈为什么要学习Shell编程

      1)Linux运维工程师在进行服务器集群管理时,需要编写Shell程序来进行服务器管理

      2)对于JavaEE和Python程序员来说,有些工作需要编写一些Shell脚本进行程序或者是服务器的维护,例如编写一个定时备份数据库的脚本。

      3)对于大多数程序员来说,需要编写Shell程序来管理集群。

    ⒉Shell是什么?

      Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止程序,甚至是编写一些程序。

    ⒊Shell脚本的格式要求

      ①Shell脚本以#! /bin/bash开头  ★含义是指定当前Shell脚本以那种Shell方式进行解析

      ②脚本需要有可执行权限。

    ⒋Shell脚本的执行方式

      ①输入脚本的绝对路径或相对路径

        ★1.执行的脚本需要有x(可执行)权限

      ②sh + 输入脚本的绝对路径或相对路径(不推荐)

        ★1.执行的脚本无需x(可执行)权限

    ⒌Shell语法

      1)变量

        ⅰ区分

          Shell变量分为系统变量和用户自定义变量

          系统变量有:$HOME,$PWD,$SHELL,$USER等等

          ★显示当前shell中所有变量:set | more 【带分页】

        ⅱ定义

          ①基本语法

            ⑴定义变量:变量名=值

            ⑵撤销变量:unset 变量名

            ⑶声明静态变量:readonly 变量名,注:静态变量不能unset(撤销)。

          ②定义变量的规则

            ⑴变量名称可以用字母、数字和下划线组成,但是不能以数字开头。

            ⑵★等号两侧不能有空格。(一定注意)

            ⑶变量名称一般习惯为大写。

          ③补充

            ⑴C=`A-B`  反引号

            ⑵C=$(A-B)  等价于反引号

            ★每行代码不能以;结尾,#代表单行注释,:<<!内容!代表多行注释

        ⅲ设置环境变量

          ①export 变量名=变量值  将shell变量输出为环境变量

          ②source 配置文件  让修改后的配置信息立即生效

          ③echo $变量名  查询环境变量的值

        ⅳ位置(执行)参数变量

          ①介绍

            当我们执行一个Shell脚本时,如果希望获取到执行脚本时的参数信息,就可以使用位置(执行)参数变量。

            例如:执行./myshell.sh 100 200命令,我们可以通过位置(执行)参数变量从而在myshell脚本中获取并使用参数值100,200。

          ②基本语法

            ⑴$n:n为数字,$0代表命令行本身,$1-$9代表第1到第9的参数,第10及以上的参数需要用大括号包含,例如${12}。

            ⑵$*:这个变量代表命令行中所有的参数,$*把所有的参数看做为一个整体。

            ⑶$@:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。

            ⑷$#:这个变量代表命令行中所有参数的个数。

        ⅴ预定义变量

          ①介绍

            就是Shell设计者事先已经定义好的变量,可以直接在Shell脚本中使用。

          ②基本语法

            ⑴$$:当前进程的进程号(PID)

            ⑵$!:后台运行的最后一个进程的进程号(PID)

            ⑶$?:最后一次执行命令的返回状态,0代表正在执行,非0代表执行错误

      2)运算符

        ⅰ介绍

          如何在Shell中进行各种运算操作

        ⅱ基本语法

          ①$((运算式))

          ②$[运算式]  ★推荐  

          ③expr 运算式

            ⑴expr中运算式中的运算符两边要有空格。

            ⑵expr特殊的运算符需要转义,例如:*(乘号)

      3)条件判断

        ⅰ基本语法

          [ 表达式 ]  ★表达式的两边要有空格

          非空返回true,可使用$?验证(0为true,>1为false)

          例 [ 表达式 ] && echo OK || echo notOK  条件满足,执行后面的语句

        ⅱ常用条件判断

          ①整数之间的比较

            ⑴=  字符串比较

            ⑵-lt  小于

            ⑶-le  小于等于

            ⑷-eq  等于

            ⑸-gt  大于

            ⑹-ge  大于等于

            ⑺-ne  不等于

          ②按照文件权限进行判断

            ⑴-r  有读的权限

            ⑵-w  有写的权限

            ⑶-x  有执行的权限

          ③按照文件类型进行判断

            ⑴-f  文件存在并且是一个常规的文件

            ⑵-e  文件存在

            ⑶-d  文件存在并且是一个目录

        ⅲ if判断

          ①基本语法

            ⑴  if [ 条件判断式 ]; then

                  程序

                fi

            ⑵  if [ 条件判断式 ]

                then

                  程序

                elif [ 条件判断式 ]

                then

                  程序

                fi

            ★1,[ 条件判断式 ],条件判断式两边必须有空格

               2,推荐使用第2种方式

        ⅳ case语句

          ①基本语法

            case $变量名 in

            "值1")

              如果等于值1,则执行此处

            ;;

            "值2")

              如果等于值2,则执行此处

            ;;

              ...................

            *)

              如果都没有,则默认执行此处

            ;;

            esac

      4)循环

        ⅰfor循环

          ①  for 变量 in 值1 值2 值3 .....

              do  

                程序

              done

          ②  for((初始值;循环控制条件;变量变化))

              do

                程序

              done

        ⅱ while循环

          ①

    while [ 条件判断式 ]
    do
        程序
    done        

      5)I/0

        ⅰread读取控制台输入

          基本语法:

            read (选项) (参数)

          常用选项:

            -p:指定读取值时的提示符

            -t:指定读取值时等待的时间(秒)

          常用参数:

            变量:指定读取值时的变量名

      6)函数

        Shell编程和其他编程语言一样,有系统函数和自定义函数,此处介绍两个系统函数。

        ⅰ系统函数

          ①basename  

          返回完整路径最后/的部分,常用于获取文件名

          基本语法:

            basename [pathname] [suffix]

            basename [string] [suffix]

            basename命令会删除所有的前缀包括最后一个('/')字符,然后将字符串显示出来。

          选项:

            suffix为后缀,如果指定了suffix,basename会将pathname或string中的suffix去掉。

          ②dirname  

          返回完整路径最后/的前面部分,常用于返回路径部分

          基本语法:

            dirname 文件绝对路径

            从给定的文件绝对路径中去掉文件名(非目录部分),然后返回剩下的路径(目录部分)。

        ⅱ自定义函数

          ①基本语法      

    [function] funname [()]
    {
        Action;
        [return int ;]
    }

          ②调用

            函数名 [值]

      

  • 相关阅读:
    转载:使用单独的log4net类
    反射方法
    log4net 的配置问题和使用扩展的TGLOG.DLL
    office2010 x64 Retrieving the COM class factory for component with CLSID {000209FF00000000C000000000000046} failed due to the following error: 800
    sharepoint2013 错误2
    sp2013版本区别
    sps2013安装错误
    发光动画
    关于html5缓存部分比较详细的说明
    httpmodule sharepoint
  • 原文地址:https://www.cnblogs.com/fanqisoft/p/10460137.html
Copyright © 2011-2022 走看看