一、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. day05 java JDBC案例—Android小白的学习笔记

    1.要从键盘录入用户名与密码我们需要使用Scanner类完成操作 2.接收到用户名与密码后,我们需要调用jdbc程序根据用户名与密码查询数据库 User.java package com.superg ...

  2. pysproto bug修复

    最近,找隔壁组的同学测试了一下我的pysproto,他们提了很多有益的建议,非常感谢. 在测试中,出现了一次诡异的coredump.当数据变大的时候,就有很大的机率遇上double free.在spr ...

  3. Python 基礎 - 字符串常用操作

    字符串常用操作 今天就介紹一下常用的字符串操作,都是以 Python3撰寫的 首字母變大寫 #!/usr/bin/env python3 # -*- coding:utf-8 -*- name = & ...

  4. 出现( linker command failed with exit code 1)错误总结 (转)

    这种问题,通常出现在添加第三方库文件或者多人开发时. 这种问题一般是找不到文件而导致的链接错误. 我们可以从如下几个方面着手排查. 1.以如下错误为例,如果是多人开发,你同步完成后发现出现如下的错误. ...

  5. Servlet-RequestDispatcher.forward方法

    forward方法与Include方法非常相似,但有5点不同 1,在调用forward方法之前,输出缓冲区的数据会被清空,也就是说,在使用forward方法进行请求转发时,只可能输出别转发的web资源 ...

  6. js中substr,substring,indexOf,lastIndexOf,split 的用法

    1.substr substr(start,length)表示从start位置开始,截取length长度的字符串. var src="images/off_1.png";alert ...

  7. epoll 反应堆

    epoll反应堆模型 ================================ 下面代码实现的思想:epoll反应堆模型:( libevent 网络编程开源库 核心思想) . 普通多路IO转接 ...

  8. get和post的差异

    主要差异: 1.get在地址栏上回显示用户信息,安全性低,post采用加密方式传输不显示,安全性高. 2.get相比post提交方式较快一点,因为post封装了一次消息再发送(加密). 3.get方式 ...

  9. Web应用功能测试测试点

    做了几年的功能测试,也经手了好几个Web应用的项目,在做项目当中积累了一些经验.在这里我对通用一些功能模块的测试点做个记录,一来梳理一下测试用例设计的思路,以便加快相似项目的测试用例的设计,二来有利于 ...

  10. ALV 顶栏的按钮设定

    *&---------------------------------------------------------------------* *& Report ZHJ_TEST0 ...