shell脚本很多人谈论说难,当然,这点不可否认。但是shell脚本难,并不是难在它的规则,语法上。shell脚本趋向于编程,编程难吗?难!!它难在哪!它难在写程序时要像计算机一样去思考,这就是难点。shell也一样,书写语法,规则,并不难。几个小时你就可以学会。但是,把自己变成机器一样去思考,这就比较难了。如果想要克服这一点,那么需要长时间的磨练与不停的思考。

      shell scripts的注意事项:shell scripts的撰写执行需要注意以下几点:

      1、指令的解析执行是从上至下,从左到右的。

      2、指令、选项与参数间的多个空格会被忽略。

      3、空行和[TAB]键视作空格。

      4、读取到Enter符号(CR)就开始尝试执行

      5、可以用"\"换行

      6、“#”为注释

       shell  script 的书写,把脚本单独放一个目录中,脚本要分段书写,并充分利用注释。

      1、第一行#!/bin/bash

      2、程序内容说明-文件头

      3、主要环境变量、变量宣告

      4、函数、主程序部分

      5、执行成果报告-返回值

        如果一个脚本长时间没用,或者是他人接手的时候根本看不懂这个脚本是干什么用的,本着为他人方便为自己方便的原则,就是写文件头。文件头的内容包括,脚本名称、脚本的功能描述、作者的联系方式、版权宣告、历史记录、其他,等等

       在shell脚本中变量是最常用的,而且还会用到返回值,那么什么是变量,脚本返回值代表什么。

       变量是脚本编程中进行数据表现的一种方法,是计算机为了保留数据项,而在内存中分配的一个位置或者一组位置的标识或名字、变量既可以出现在算术操作中,也可以出现在字符分析过程中、变量的名字就是变量保存值的地方。引用变量的值就叫做变量的替换。

       变量名必须以字母或者下划线开始,后面跟字母数字或下划线。变量用“=”赋值时不要留空格。变量名是大小写敏感的、可以定义NULL值变量。例如d= c="",不要用特殊字符。如:? , * 等,不要和内部变量冲突。

       变量宣告、函数等主程序等,为脚本内容,执行完后script的返回值。返回值是命令的退出状态,用来检测命令执行是否成功。比如

        0   代表   成功(success)

        non-zero    代表  Failure

        2   代表    不正确的用法(incorrect  usage)

        126  代表  不可执行(Not  an  executable)

        127   代表  命令找不到(Command   not   found)

       我们可以用 exit n 、return N 来定义,如下图我们可以看下命令执行后的,返回值,如下图

 

        某些时候需要两相互关联的变量才能完成一个脚本,这个时候需要数组格式var[index]=value 如下图

        shell脚本常用的循环。

------------------------------------------

         条件语句的,格式

         if [condition]

            then

            command

          fi

-------------------------------------------

          if[condition];then

             command1

          else

             command2

           fi

---------------------------------------------

          if[condition1];then

               command1

          elif[condition2];then

                command2

           else

                command3

           fi

-----------------------------------------------

for循环

        格式:for NAME in [list];do

                               COMMANDS;

                     done

例:如下图:

 

--------------------------------------------------

while循环

       格式:while CONTROL-COMMANDS;do

                                CONSEQUENT-COMMANDS;

                    done

例:如下图

 

---------------------------------------------------------------

until循环

格式:until  TEST-COMMAND;do

                      CONSEQUENT-COMMANDS;

            done

例:如下图

 

-------------------------------------------------------

case循环

格式:caseEXPRESSION in 

                 CASE1 )

                        COMMAND-LIST

                         ;;

                 CASE2)

                       COMMAND-LIST

                         ;;

              ...CASEN)

                       COMMAND-LIST;;

             esac

例:如下图

     

-----------------------------------------------------------

select (从ksh引入)

格式:select WORD [in LIST];do

                        RESPECTIVE-COMMANDS;

            done

例如下图

-------------------------------------------------------------

       从上面的例子中看到有break的字样,break语句用来在正常结束之前退出当前循环,和break想对应的还有continue语句,continue语句是基于for,while,until, select内的循环。

       在shell里还有正则表达式,前面文章里已经介绍过,就不详加介绍, shell就先讨论到这里