• Shell Scripts


    Shell Scripts

      shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面, 搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的。

    shell script 的撰写中注意事项:

    1. 指令的执行是从上而下、从左而右的分析与执行;
    2. 指令的下达就如同第四章内提到的: 指令、选项与参数间的多个空白都会被忽略掉;
    3. 空白行也将被忽略掉,并且 [tab] 按键所推开的空白同样视为空格键;
    4. 如果读取到一个 Enter 符号 (CR) ,就尝试开始执行该行 (或该串) 命令;
    5. 至于如果一行的内容太多,则可以使用『 [Enter] 』来延伸至下一行;
    6. 『 # 』可做为批注!任何加在 # 后面的资料将全部被视为批注文字而被忽略
    #!/bin/bash		#因为我们使用的是 bash ,所以,必须要以『 #!/bin/bash 』来宣告这个文件内的语法使用bash 的语法
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    echo -e "Hello World! a 
    "
    exit 0	#那么我们也可以利用 exit 这个指令来让程序中断,并且回传一个数值给系统
    

    数值运算:简单的加减乘除

      在数值运算上可以使用这种方法『 declare -i total=$ {firstnu}*$ {secnu} 』也可以使用这种方法var=$((运算内容)) 数值运算上的处理,则有:『+, -, *, /, %』。

    利用 source 来执行脚本:在父程序中执行

    • source showname.sh

    在这里插入图片描述

    利用 test 指令的测试功能

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    利用判断符号 [ ]

    • 在中括号 [] 内的每个组件都需要有空格键来分隔;
    • 在中括号内的变数,最好都以双引号括号起来;
    • 在中括号内的常数,最好都以单或双引号括号起来。

    Shell script 的默认变数($0, $1...)

    • $# :代表后接的参数『个数』,以上表为例这里显示为『 4 』;
    • $@ :代表『 "$1" "$2" "$3" "$4" 』之意,每个变量是独立的(用双引号括起来);
    • $* :代表『 "$1c$2c$3c$4" 』,其中 c 为分隔字符,默认为空格键。

    条件判断式

    利用 if .... then

    if [ 条件判断式 ]; then
    当条件判断式成立时,可以进行的指令工作内容;
    fi <==将 if 反过来写,就成为 fi 啦!结束 if 之意!
    # 多个条件判断 (if ... elif ... elif ... else) 分多种不同情况执行
    if [ 条件判断式一 ]; then
    当条件判断式一成立时,可以进行的指令工作内容;
    elif [ 条件判断式二 ]; then
    当条件判断式二成立时,可以进行的指令工作内容;
    else
    当条件判断式一与二均不成立时,可以进行的指令工作内容;
    fi
    

    利用 case ..... esac 判断

    case $变量名称 in <==关键词为 case ,还有变数前有钱字号
     "第一个变量内容") <==每个变量内容建议用双引号括起来,关键词则为小括号 )
    	程序段
    ;; <==每个类别结尾使用两个连续的分号来处理!
     "第二个变量内容")
    	程序段
    ;;
     *) <==最后一个变量内容都会用 * 来代表所有其他值
    不包含第一个变量内容与第二个变量内容的其他程序执行段
    exit 1
    ;;
    esac <==最终的 case 结尾!『反过来写』思考一下!
    

    利用 function 功能

    function fname() {	#因为 shell script 的执行方式是由上而下,由左而右, 因此在 shell script当中的 function 的设定一定要在程序的最前面,
    	程序段	# function 也是拥有内建变量的~他的内建变量与 shell script 很类似, 函数名称代表示 $0 ,
    而后续接的变量也是以 $1, $2... 来取代的~
    }
    

    循环 (loop)

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

    #『当 condition 条件成立时,就进行循环,直到condition 的条件不成立才停止』
    while [ condition ] <==中括号内的状态就是判断式
    do <==do 是循环的开始!
    	程序段落
    done <==done 是循环的结束
    
    #『当 condition 条件成立时,就终止循环, 否则就持续进行循环的程序段。』
    until [ condition ] 
    循环的程序段。』
    do
    	程序段落
    done
    

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

    for var in con1 con2 con3 ...
    do
    	程序段
    done
    
    初始值:某个变量在循环当中的起始值,直接以类似 i=1 设定好;
    限制值:当变量的值在这个限制值的范围内,就继续进行循环。例如 i<=100;
    执行步阶:每作一次循环时,变量的变化量。例如 i=i+1。
    for (( 初始值; 限制值; 执行步阶 ))
    do
    	程序段
    done
    

    shell script 的追踪与 debug

    • sh [-nvx] scripts.sh
    • 选项与参数:
      • -n :不要执行 script,仅查询语法的问题;
      • -v :再执行 sccript 前,先将 scripts 的内容输出到屏幕上;
      • -x :将使用到的 script 内容显示到屏幕上,这是很有用的参数!

    重点回顾

    • shell script 是利用 shell 的功能所写的一个『程序 (program)』,这个程序是使用纯文本文件,将一些 shell 的语法与指令(含外部指令)写在里面,搭配正规表示法、管线命令与数据流重导向等功能,以达到我们所想要的处理目的
    • shell script 用在系统管理上面是很好的一项工具,但是用在处理大量数值运算上, 就不够好了,因为 Shellscripts 的速度较慢,且使用的 CPU 资源较多,造成主机资源的分配不良。
    • 在 Shell script 的文件中,指令的执行是从上而下、从左而右的分析与执行;
    • shell script 的执行,至少需要有 r 的权限,若需要直接指令下达,则需要拥有 r 与 x 的权限;
    • 良好的程序撰写习惯中,第一行要宣告 shell (#!/bin/bash) ,第二行以后则宣告程序用途、版本、作者等
    • 对谈式脚本可用 read 指令达成;
    • 要建立每次执行脚本都有不同结果的数据,可使用 date 指令利用日期达成;
    • script 的执行若以 source 来执行时,代表在父程序的 bash 内执行之意!
    • 若需要进行判断式,可使用 test 或中括号 ( [] ) 来处理;
    • 在 script 内,$0, $1, $2..., $@ 是有特殊意义的!
    • 条件判断式可使用 if...then 来判断,若是固定变量内容的情况下,可使用 case $var in ... esac 来处理
    • 循环主要分为不定循环 (while, until) 以及固定循环 (for) ,配合 do, done 来达成所需任务!
    • 我们可使用 sh -x script.sh 来进行程序的 debug
  • 相关阅读:
    VS.NET 2010 新功能 [整理]
    Sculpture 基于MDD的集成开发平台
    更换VS.NET 2010的皮肤 [Visual Studio Blog]
    SQL Server BI Step by Step SSIS 7 (End) 事务,错误输出,事件处理,日志记录
    和我一起学CSLA.NET设计模型及数据访问
    Visual Studio DSL 入门 2
    SQL Server BI Step by Step SSIS 5 通过Email发送查询结果
    SQL Server BI Step by Step SSRS 1Reporting Service 2008的新特性
    SQL Server BI Step by Step SSRS 2SQL Server 2008 Reporting Services实现匿名访问报表
    和我一起学CSLA.NET先忽悠下
  • 原文地址:https://www.cnblogs.com/chengmf/p/12651965.html
Copyright © 2020-2023  润新知