一、shell script的编写与执行

   1、shell script 的编写中还需要用到下面的注意事项:

    a、命令的执行是从上到下,从左到右地分析与执行

    b、命令、参数间的多个空白都会被忽略掉

    c、空白行也将被忽略掉, 并且[tab]按键所得的空白同样视为空格键

     d、如果读取到一个Enter符号(CR),就尝试开始执行该行(或该串)命令

    e、至于如果一行的内容太多,则可以使用“\[Enter]”来扩展至下一行

     f、"#"可作为批注。

   2、执行文件(/home/sam/shell.sh)

    1、直接命令执行: shell.sh文件必须要具备可读与可执行(rx)的权限,然后:

      绝对路径: 使用/home/sam/shell.sh来执行

      相对路径: 假设工作目录为/home/sam/ , 则使用./shell.sh

      变量“PATH”功能: 将shell.sh放在PATH指定的目录内, 例如:~/bin/

    2、以bash进程来执行:通过“bash shell.sh”或“sh shell.sh”来执行

  3、script的执行方式的区别(source, sh script, ./script)

    1、利用直接执行的方式来执行script:

      不论是绝对路径/相对路径还是$PATH内, 或者是利用bash(或sh)来执行脚本时,该script都会使用一个新的bash环境来执行(子进程)

    2、利用source来执行脚本: 在父进程中执行

二、善用判断式

  1、 利用test命令的测试功能

    如:test -e /sam && echo "exist" || echo "Not exist"

  

  2、利用判断符号[]

    如: [-z "$HOME"] ; echo $?

    注意:

      a、在括号[]内每个组件度需要有空格键来分隔;

      b、在中括号内的变量,最好都以双引号括起来;

      c、在中括号内的常量, 最好都以单或双引号括起来。

  3、shell script 的默认变量($0 $1 ...)

    $0: 执行的脚本文件名

      $1,$2,...: 第1,2,...个参数

    $#: 代表后接的参数“个数”

    $@: 代表“$1”、“$2”、“$3”之意,每个变量是独立的(用双引号括起来)

    $*: 代表"$1c$2c$3c$4",其中c为分隔字符, 默认为空格键

    shift: 造成参数变量号码偏移

      shift 会移动变量, 而且shift后面可以接数字, 代表拿掉最前面的几个参数的意思。

三、 条件判断式

   1、利用 if...then

     单层:

        if [条件判断式]; then

            逻辑

        fi <--if语句结束语

     多重:

        if [条件判断式]; then

           逻辑

        elif [条件判断式]; then

          逻辑

        else 

          逻辑

        fi

    2、利用case...esac判断

      case $变量名称 in

        "第一个变量内容" )

          程序段

          ;;

        "第二个变量内容")

          程序段

          ;;

         *)

          exit 1

          ;;

      esac

    3 、利用function功能

      function fname(){

        程序段

      }

 四、循环(loop)

    1、while do done, until do done(不定循环)

      while [ condition ]

      do

        程序段落

      done

        ----------》当condition条件成立时,就进行循环

       until [ condition ]

       do

         程序段落

       done

       -----------》当condition条件成立时,就终止循环

    2、for ... do...done(固定循环)

        for var in con1 con2 con3...

        do

          程序段落

        done

    3、for ...do ...done的数值处理

      for((初始值; 限制值; 执行步长))

       do

        程序段

      done

五、shell script的追踪与调试

   sh [-nvx] scripts.sh

    -n : 不要执行script 仅查询语法的问题

    -v: 在执行script前, 先将script的内容输出到屏幕上

    -x: 将使用到的script内容显示到屏幕上

 

   

shell script的更多相关文章

  1. shell及脚本4——shell script

    一.格式 1.1 开头 必须以 "# !/bin/bash"  开头,告诉系统这是一个bash shell脚本.注意#与!中间有空格. 二.语法 2.1 数值运算 可以用decla ...

  2. (copy) Shell Script to Check Linux System Health

    source: http://linoxide.com/linux-shell-script/shell-script-check-linux-system-health/ This article ...

  3. shell script练习

    执行脚本的几种方式: 1. sh a.sh 或者  bash a.sh  调用的是 /bin/bash 进程执行的,所以脚本不需要执行权限. 2. 直接使用绝对路径执行, /home/script/a ...

  4. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...

  5. CentOS Linux下一个tomcat起停,查看日志的shell script

    CentOS 的tomcat安装目录:/usr/local/tomcat vi MyTomcatUitl.sh          创建文件chmod u+x MyTomcatUtil.sh   赋执行 ...

  6. Shell script for logging cpu and memory usage of a Linux process

    Shell script for logging cpu and memory usage of a Linux process http://www.unix.com/shell-programmi ...

  7. shell script入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  8. shell script 的追踪与 debug

    shell script 的追踪与 debug scripts 在运行之前,最怕的就是出现语法错误的问题了!那么我们如何 debug 呢?有没有办法不需要透过直接运行该 scripts 就可以来判断是 ...

  9. 第十三章、学习 Shell Scripts 简单的 shell script 练习

    简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [root@www scripts]# vi sh02.sh #!/bin/bash # Program: # Us ...

随机推荐

  1. NPOI 格式设置2—时间,千分位,繁体,小数位

    在Excel中我们经常要设置格式,比如说日期格式(yyyymmdd).小数点格式(1.20).货币格式($2000).百分比格式(99.99%)等等,这些东西在过去我们恐怕只能在服务器端生成好,不但增 ...

  2. 随机生成UUID(GUID)的方法

    - (NSString *)UUID { CFUUIDRef uuid_ref = CFUUIDCreate(NULL); CFStringRef uuid_string_ref= CFUUIDCre ...

  3. Swiper 中文API手册(share)

    本文分享自 http://www.cnblogs.com/scavengers/p/3760449.html ---------------------------华丽的分割线------------ ...

  4. Spring boot centos7 后台服务安装部署

    Spring boot 应用服务安装部署(maven工程) 1.首先在maven工程的pom文件中引入以下标签并保存 <build> <plugins> <plugin& ...

  5. 2016年中国大学生程序设计竞赛(合肥)-重现赛1001 HDU 5961

    传递 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  6. Linux Pthread 深入解析(转-度娘818)

    Linux Pthread 深入解析   Outline - 1.线程特点 - 2.pthread创建 - 3.pthread终止         - 4.mutex互斥量使用框架         - ...

  7. WinCE小结

    第一章:开发环境搭建 软件列表:详细说明 1.系统定制和编译:Platform Builder 5.0 (依赖于Net Framework1.1)2.应用程序编写:早期的用Embedded Visua ...

  8. 如何配置网络使得宿主机能够访问VM数据库?

    https://www.zhihu.com/question/23955166 背景:公司内外网区分,不能同时上,局域网内得手动切换两个网络,分别访问外网或者内网,ip是动态获取的.现在本机上装有vm ...

  9. eclipse不能新建server

    将server删除了之后,再新建server选择tomcat的时候servername栏空着而且不能写东西,就添加不成功了,怎么办呢,问过度娘之后,问题迎刃而解,步骤如下 1.到[工程目录下 work ...

  10. (转) Artificial intelligence, revealed

    Artificial intelligence, revealed Yann LeCunJoaquin Quiñonero Candela It's 8:00 am on a Tuesday morn ...