shell编程的基本知识

   清空日志的三种方法

    1.echo  cary >test.log

        >test.log

    2.echo cary >test.log

        echo  >test.log

    3.echo cary >test.log

       cat /dev/null >test.log

   shell脚本很擅长处理纯文本类型的数据,而linux中几乎所有文件都是存文本文件

   在unix /linux中主要有2大类的SHELL

    bash和 csh

    SHELL脚本语言是弱类型语言,较为通用的shell有标准的bourne shell和CSH

   运维人员常用的脚本语言

   1.php  ----网页程序,也是脚本语言,更专注于web页面开发

   2.perl -----脚本语言,比shell强大的多,前几年很火,语法灵活,复杂,实现方式很多,不易读

   3.python ----近几年很火的语言,可以做脚本开发,也可以做web开发

 

    shell脚本与php,perl,python的区别?

     shell的优势在与处理操作系统底层的业务(大量的命令为它做支撑,2000多个命令为shell做支撑

     grep,awk,sed),一键安装,报警脚本,常规的业务应用,shell开发快速。

     php,python的优势在于开发运维工具,web界面的管理工具

     可以通过相关命令查看系统使用的是什么SHELL

      1.env   ----查看整个系统的变量

      2.echo $SHELL    ---查看shell变量,可以看到里面的shell类型。


   4.shell脚本的建立和执行

      shell脚本通常在编辑器(vi vim)中编写。由unix/linux命令,bash shell命令,程序结构控制语句和注释等内容组成

       在一个规范的shell脚本第一行会支持由那个程序来解释

       如

        #!/bin/bash  或者 #!/bin/shell

        #!  ----被称作幻数,在执行bash脚本时,由它来确认使用那个sehll语言来解释脚本内容,必须在第一行,如果在

              内容里面用#!就是注释了。

        在shell脚本中,#后面的内容是注释内容,不会被脚本执行。


        shell脚本的执行

           当shell脚本以非交互的方式运行时,它会先找环境变量ENV下的路径,该变量指向了

            一个.bashrc文件。

        shell脚本的执行通常可以采用如下三种方式:

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

         2.path/script-name 或者 ..script-name    当前路径下执行脚本

    

          shell脚本的开发基本规范及习惯

          1.开头指定脚本解释器

             #!/bin/bash或者#!/bin/sh

          2.开头加版本版权信息

             #date: 20151130

             #Author:   cary.qin

             #mail :   [email protected]

             #function: This scripts function is ......

             #version : 1.1

           3.脚本中不用中文注释

           4.脚本以.SH为扩展名

               如.script-name.sh

           5.代码书写优秀习惯

               1)成对的内容一次性写出,防止遗忘。如:‘’[] {}这些

               2)[ echo ]中括号2端要有空格。

               3)流程控制语句一次书写完成,防止遗忘出错。

                      if 条件内容

                            then

                             内容

                            fi


在Linux下,可以查看系统包含了那些shell

 /etc/shells    -----此目录包含了系统支持的shell类型


查找命令是属于什么类型的命令

 type ls ----查找命令是否是shell内嵌的命令或者系统的命令


在Linux中可以在同一行输入命令,需要用";"分号进行隔开,否则报错

如果命令过长,自动换行了,需要使用“\”符号另起一行。


shell中的变量

1.变量的定义

  变量名=值

  eg:xx=19  ----定义了一个值为19的xx的变量,此种定义方式称为本地变量

     只影响本地。

  如果需要使用,可以使用echo输出,并需要加入$符号调用

  eg:echo $xx  ----返回19值


  如果需要取消变量,使用unset xx ----这样就取消了xx变量


  定义环境变量

   export xx=10  -----通过此方式定义的变量,叫做环境变量,影响到全局。


   使用set可以查看系统的变量  env命令可以显示出系统有哪些环境变量


   位置变量

    $0  ----表示变量的名字

    $1  ----表示第一个变量

    $#  ----表示变量的数量

    $*  ----表示所有的变量



2.系统中含有一些环境变量

  PATH  ----路径变量

  USER  ----用户变量

  HISTFILESIZE ----历史命令的存储变量

  PS1  


  相关变量可以用echo $变量名 进行查看相关的值