zoukankan      html  css  js  c++  java
  • shell基本语法


    1 shell脚本的规范:
      1 文件后缀是 .sh
      2 首行是命令解释器: #!/bin/bash
      3 首行下面注释写脚本基本信息:
      脚本名称、功能、编写时间、撰写人、联系方式等

    2 shell执行方式:
      1 使用命令解释器加载脚本文件:
        bash 文件
      2 绝对路径或相对路径
        ./demo.sh
      脚本需要有可执行权限并选定了解释器
        3 source 或 .
        source ./demo.sh
        . demo.sh

        功能:加载脚本文件

    3 shell变量:

      变量定义:
        变量名=变量值
      变量打印:
        echo $变量名

      分为: 本地变量、全局变量、内置变量

    3.1 本地变量:
      普通变量:
        1 变量名=变量值 变量必须连续不能有空格和特殊字符
        2 变量名='变量值' 变量可以含有空格和特殊字符 按照原样
        3 变量名="变量值" 变量可以不连续 变量值中可以引用其他变量
      命令变量:
        1 变量名='命令'
        2 变量名=$(命令)

      3.2 全局变量:
        1 查看全局变量:
          env
        2 定义全局变量:
          先定义后声明:
            demo=val
            export demo
          直接定义
            export demo=val
        3 内置变量:
          $0 获取当前脚本的名称
          $# 获取当前脚本的参数个数
          $n 获取当前脚本第n个参数
          $? 获取上一次命令的执行情况 0代表成功
          $$ 获取脚本运行时候的进程pid
          $@ 获取当前脚本的参数列表
          $* 获取当前脚本所有参数的字符串表示

    字符串截取:
      new_str=$(str:start:length)
      将str从start开始截取length个

      new_str=$(str:0-length)
      将str从结尾截取length个长度


      默认值:
        var_name=$1 #取当前脚本的第一个参数
        #如果没有var_name 就赋值为default
        var_new=${var_name:-default}


        var_name=$1 #取当前脚本第一个参数
        # 不论var_name是什么都强制赋值为default
        var_new=${var_name:+default}

     

      3.4 查看变量的方法:
        1 $变量名
          私下使用
        2 "$变量名"
          调用变量时使用
        3 "${变量名}"
          脚本中使用

    4 变量操作:
      1 声明只读
        readonly 变量名
      2 删除变量
        unset 变量名


    4 shell验证操作:
      方式1: [ 表达式 ] 表达式两侧需要有空格
        [ 1 -eq 1 ] # 1是否和1相等
        echo $? # 查看上一句执行结果
      方式2: test 表达式
        test 1 -eq 1 # 查看1是否和1相等
        echo $? # 查看上一句执行结果

      4.1 逻辑:
        并 &&    命令1 && 命令2   如果命令1执行成功 就执行命令2
                  命令1 执行失败 就不执行命令2
        非 ||       命令1 || 命令2      如果命令1执行成功 不执行命令2
                  命令1执行失败 执行命令2
      4.2 文件表达式:
        [文件表达式 文件名]
        -e 是否存在
        -f 是否是文件
        -d 是否是目录
        -r 是否可读
        -w 是否可写

      4.3 数字比较:
        [n1 -gt n2] n1是否大于n2
        -gt 大于
        -lt 小于
        -eq 等于
        -ne 不等于


      4.4 字符串
        == 是否相等
        != 是否不一致
        -z 是否为0
        -n 长度是否不为0

    5 流程控制:
      运算:
        let n=n+1
        或
        n=$(($n+1))

      单if分支:
         if 条件
         then 执行语句
         fi

      多if分支
        if 条件
        then 执行语句
        elif 条件
        then 执行语句
        else 执行语句
        fi

      case多分支
        case 值 in
        值1)
        执行语句
        ;;
        值2)
        执行语句
        ;;
        esac

      循环:
        until 条件
        do 执行语句
        done

    6 函数
      定义函数:
      func_name(){
      函数体
      }

      调用函数:
      func_name


      有参数函数:
      func_name(){
      args = $n
      }
      调用:
      func_name args1 args2

     

  • 相关阅读:
    linux mint使用起來比較穩定
    ubntu下的记录软件brasero ,mint内置
    [Enterprise Library]Data (二)DataCollection
    jquery 获取标签名
    谁会做logo呢
    供用淘宝卖家常用的称谓:各位亲,跨年,诸事顺利~
    rails缓存 学习
    test
    jquery 复习基础知识
    开机改用nginx启动,停止apache2的开机启动
  • 原文地址:https://www.cnblogs.com/Lin-Yi/p/7782397.html
Copyright © 2011-2022 走看看