一、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. 第三个Sprint团队贡献分

    201306114322 邵家文 50分 201306114319 陈俊金 10分 201306114320 李新    10分 201306114324 朱浩龙 10分

  2. ThinkPHP 3.2 获取页面运行时间

    在ThinkPHP中,可以通过在config.php中配置'SHOW_PAGE_TRACE' =>true,打开页面调试,实现页面载入时间的显示.但显示在页面右下角TP的LOGO显然不能适用于我 ...

  3. win 7~~~win 10 debug的使用方法

    第一步:下载安装DOSBox软件 附上链接:http://pan.baidu.com/share/link?uk=553724690&shareid=3310971559&third= ...

  4. pyqt4:连接的一个带有参数的方法

    一般在pyqt4中的信号连接很少连接带参数的方法,很多时候连接带参数的方法节约不少代码量. self.s5_thread=scene.Worker5() self.log_get=QtCore.QTi ...

  5. linux操作

    进入root权限:sudo su 把文件b的拥有者改成a:chown a b 如果保存文件的时候出现"无法创建备份文件",是因为这个文件所在的文件夹不属于当前用户,需要把这个文件所 ...

  6. UIScrollView在AutoLayout下的滚动问题

    使用Storyboard编写UI,设置支持AutoLayout. 在其中的一个场景上,添加一个UIScrollView,在对应的代码里增加 - (void)viewDidLoad { [super v ...

  7. Struts2 之 对xwork的理解

    对象的生命周期的管理是面向对象编程亘古不变的话题,从syntax的角度,面向对象的高级编程语言都是以“对象”为核心,而对象之间的继承关系.嵌套引用关系构成的对象树结构为我们进行对象级别的逻辑操作提供了 ...

  8. Extended TCP/IP Stack In Linux: Netfilter Hooks and IP Table

    https://www.amazon.com/gp/product/1118887735 The chapter about debugging is rather outdated - it des ...

  9. git代理,windows命令行代理,linux命令行代理

    下载不动设置代理:git config --global http.proxy http://127.0.0.1:1080git config --global https.proxy https:/ ...

  10. 如何用ABBYY FineReader识别图片中的文本

    ABBYY FineReader 12是一款OCR光学字符识别软件,能够快速方便地将扫描纸质文档.PDF文件和数码相机的图像转换成可编辑.可搜索的文本,让电脑处理更具效率,摆脱从前的烦恼,告别耗时费力 ...