zoukankan      html  css  js  c++  java
  • Shell脚本书写总结

    脚本开头必须有:
    #!/bin/sh
    脚本结束后用:
    chmod +x filename
        修改脚本使用权限
    变量定义:
    变量名=值
    在变量名之前加一个$,就可以取出变量值:
    **********************************
    #!/bin/sh
    #对变量赋值:
    a="hello world"

    # 打印变量a的值:
    echo "A is:" $a
    **********************************
    **********************************

    num=2
    echo "this is the ${num}nd"
    ***********************************
    管道 |
    重定向 <  > >>
    反短斜线
      使用反短斜线可以将一个命令的输出作为另外一个命令的一个命令行参数。
    流程控制
    if ....; then
        ....
    elif ....; then
          ....
    else
          ....
    fi
    条件测试:
    [ -f "somefile" ] :判断是否是一个文件
    [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
    [ -n "$var" ] :判断$var变量是否有值
    [ "$a" = "$b" ] :判断$a和$b是否相等


    case表达式可以用来匹配一个给定的字符串,而不是数字
    case ... in
    ...) do something here ;;
    esac
    我们利用这一点写了一个叫做smartzip的脚本,该脚本可以自动解压bzip2, gzip 和zip 类型的压缩文件:
    {file命令可以辨别出一个给定文件的文件类型,如:file lf.gz,该命令输出结果为:
    lf.gz: gzip compressed data, deflated, original filename,
    last modified: Mon Aug 27 23:09:18 2001, os: Unix
    }


    #!/bin/sh
    ftype=`file "$1"`
    case "$ftype" in
    "$1: Zip archive"*)
      unzip "$1" ;;
    "$1: gzip compressed"*)
      gunzip "$1" ;;
    "$1: bzip2 compressed"*)
      bunzip2 "$1" ;;
    *) error "File $1 can not be uncompressed with smartzip";;
    esac

      您可能注意到我们在这里使用了一个特殊的变量$1。该变量包含了传递给该程序的第一个参数值。也就是说,当我们运行:


    smartzip articles.zip
    $1 就是字符串 articles.zip
     
      select 表达式是一种bash的扩展应用,尤其擅长于交互式使用。用户可以从一组不同的值中进行选择。
    *********************************
    select var in ... ; do
     break
    done
    .... now $var can be used .... 
    *********************************
    *********************************

    while ...; do
    ....
    done 
    *********************************
    引号 (单引号和双引号) 将防止这种通配符扩展:
    ****************
    #!/bin/sh
    echo $SHELL
    echo "$SHELL"
    echo '$SHELL'
      运行结果为:
    /bin/bash
    /bin/bash
    $SHEL
    *****************
  • 相关阅读:
    BZOJ 3132: 上帝造题的七分钟 树状数组+差分
    PAT Advanced 1006 Sign In and Sign Out (25 分)
    PAT Advanced 1011 World Cup Betting (20 分)
    PAT Basic 1032 挖掘机技术哪家强 (20 分)
    PAT Basic 1028 人口普查 (20 分)
    PAT Basic 1004 成绩排名 (20 分)
    大数据数据库HBase(二)——搭建与JavaAPI
    PAT Advanced 1009 Product of Polynomials (25 分)(vector删除元素用的是erase)
    PAT Advanced 1002 A+B for Polynomials (25 分)(隐藏条件,多项式的系数不能为0)
    PAT Basic 1041 考试座位号 (15 分)
  • 原文地址:https://www.cnblogs.com/immortalBlog/p/14698817.html
Copyright © 2011-2022 走看看