一、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. re模块详解

    #!/usr/bin/env python #-*- coding:UTF-8 -*- ##################################################### # ...

  2. isKindOfClass,isMemberOfClass

    - (BOOL)isKindOfClass:(Class)aClass; - (BOOL)isMemberOfClass:(Class)aClass; 特点: 1.isKindOfClass   判断 ...

  3. D - 图论

    Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Descr ...

  4. 十分钟了解分布式计算:Spark

    Spark是一个通用的分布式内存计算框架,本文主要研讨Spark的核心数据结构RDD的设计思路,及其在内存上的容错.内容基于论文 Zaharia, Matei, et al. "Resili ...

  5. PHP连接MySQL数据库

    PHP连接MySQL数据库 既然现在你看到了这篇文章,说明你肯定知道PHP和MySQL是怎么一回事,我就不啰嗦了.但为什么你还要继续阅读此文呢?可能是以前你习惯复制粘贴一些代码,并没有真正弄懂代码的含 ...

  6. template 不能分别在.h和.cpp中定义模板

    先上代码: #ifndef SEQLIST_H #define SEQLIST_H #include <iostream> ; template <typename type> ...

  7. 如何处理json数据

    1. 前台处理方式之一: ★jQuery.parseJSON(json)                     var parsej = $.parseJSON(data);             ...

  8. Codeforces Round #171 (Div. 2)

    A. Point on Spiral 由于坐标\(.|x|.|y| \le 100\),所以可直接bfs计算. 若数据较大,需要找规律. B. Books 维护窗口\([l,r]\),使\(\sum_ ...

  9. JAVA的单例模式与延时加载

    延迟加载(lazy load)是(也称为懒加载),也叫延迟实例化,延迟初始化等,主要表达的思想就是:把对象的创建延迟到使用的时候创建,而不是对象实例化的时候创建.延迟加载机制是为了避免一些无谓的性能开 ...

  10. 使用RXTX获取电脑串口

    RXTX是javacomm串口通信的一个扩展 RXTX开发所需文件的下载地址:http://rxtx.qbang.org/wiki/index.php/Download 解压之后可以看到支持各个平台的 ...