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
    *****************
  • 相关阅读:
    主流液晶显示器尺寸参数
    不能访问网络位置的解决方法(转)
    打开Word提示你正试图运行的函数包含有宏或需要宏语言支持的内容
    教你如何防“蹭网”
    ASA数据库瘦身(原创)
    多种解决:“Word无法启动转换器mswrd632.wpc”方法
    百兆线与千兆线网线制作方法
    linux常用命令
    DefaultIfEmpty
    实现手机发送验证码 进行验证
  • 原文地址:https://www.cnblogs.com/immortalBlog/p/14698817.html
Copyright © 2011-2022 走看看