• 08shell脚本


    shell脚本编程

    1.1简介

    1. 什么是shell脚本
    shell脚本: 就是一些命令的集合, 在脚本文件中可以有流程控制, 如顺序, 条件分支和循环等
    脚本文件一般一.sh文件为扩展名, 但是不是必须的.
    
    1. 基本格式
    命名格式
        一般使用.sh为后缀命名文件 (这是一个约定, 不是必须的)
    书写格式
        # - 注释
        # 第一行的内容
        #! /bin/bash - 解析当前脚本文件使用的命令解析器
        #! /bin/sh
        bourne shell ->sh -> unix
        bourne again shell -> bash
        # 第二行开始
        shell命令 1
        shell命令 2
        shell命令 3
    
    1. 执行脚本
      • 脚本创建出来之后是一个普通文件 -> 没有执行权限
    • 例子
    chmod u+x xxx.sh
    ./xxx.sh -> 最常用的方式
    sh xxx.sh
    

    1.2 shell中的变量

    1. 如何定义变量
    int a;
    int number = 9;
    # shell - 变量没有数据类型, 新变量定义必须初始化
    value=123
    value1="123"
    value1="hello,world"
    #赋值的时候=前后不能有空格
    
    1. 位置变量 - 执行shell脚本时候, 传递到内部的参数
      • $0 - 脚本文件的名字
      • $1 - 第一个参数
      • $2 - 第二个参数
      • $3 - 第三参数
    • 例子
    #!/bin/bash
    echo $0
    echo $1
    echo $2
    echo $3
    echo $4
    echo $5
    echo $6
    # 执行脚本
    ./test.sh 1 2 3 4 a b c d e f
    # 输出结果
    ./test.sh
    1 2 3 4 a b
    
    1. 特殊变量
    $#: 表示参数的个数
    $@: 表示全部的参数
    $$: 当前进程的PID
    $?: 程序执行完成之后的返回值
    
    1. 取普通变量的值
    第一种方式: $变量名
        $PATH
        $value
    第二种方式: ${变量名}
        ${PATH}
        ${value}
    
    1. 取命令执行之后的得到的值
    第一种方式
        value=$(shell命令)
    第二种方式:
        value=`shell命令`
    

    1.3

    awk 可以将文件拆分成功若干行, 根据指定的分隔符, 再将每一行拆分成若干列, 默认按照空格或tab进行拆分

    1. 基本语法格式
    § awk 参数 '条件{处理动作}' 操作的文件或数据
    § awk 参数 '/正则表达式{处理动作}' 操作的文件或数据
    
    1. 指定分隔符的参数: -F
    -F分隔符
    如果不指定分隔符, 默认是按照空格或者tab进行拆分
    
    1. 如何使用变量取出某一列?
    $0 - 当前行
    $1 - 拆分的第一列
    $2 - 拆分的第二列
    $3 - 拆分的第三列
    ...
    打印某一列的值
    print $n
    

    1.4 条件判断语法 - if

    # 条件判断语句和[ 判断语句 ]左右必须要有空格间隔
    if[ 判断语句 ];then
    处理语句
    处理语句
    fi
    # 或者
    if[ 判断语句 ]
    then
    处理语句
    处理语句
    fi
    
    if [ 判断语句 ];then
    处理语句
    处理语句
    elif [ 判断语句 ];then
    处理语句
    处理语句
    else
    处理语句
    处理语句
    fi
    

    2.5 循环控制

    循环:
    for语句和while
    例1:
    for var in apple pear banana
    do
    echo $var
    done
    例2:打印当前所有的文件
    for file in `ls`
    do
    echo $file
    done
    例3:求1-100的和
    sum=0
    for i in {1..100}
    do
    sum=$[$sum+$i]
    done
    echo "sum==[$sum]"
    如果一个文件名字为: file.xxx, 想去掉~~得到file可以: basename file.xxx ".xxx"
    
    使用这种方法可以获得文件名字去掉扩展名后的名字: 如: basename test.sh .sh
    案例: 某个目录下有a.bak b.bak c.bak d.bak, 要求把扩展名去掉, 变成a b c d
    mv a.bak $(basename a.bak .bak)
    while的用法:
    案例: 求1-10的和
    sum=0
    i=0
    while [ $i -le 10 ]
    do
    sum=$[$sum+$i]
    i=$[$i+1]
    done
    echo "sum==[$sum]"
    

    1.5补充

    1. 查看脚本命令解析器
    cat /etc/shells
    2. 查看当前使用的脚本  echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。
    echo $SHELL
    3. 查看环境变量的值
    echo $环境变量
    
  • 相关阅读:
    [转]ASP.Net+XML打造留言薄
    [导入]如何构造一个C#语言的爬虫蜘蛛程序
    [导入]CSS基本布局16例
    [导入]ASP.NET26个常用性能优化方法
    javascript控制cookies及在跳出本页给出提示,是否放弃操作!!
    RunOnBeforeUnload()
    [导入]网易娱乐频道也在用风讯CMS
    etcd集群配置
    openstack上传镜像
    Ambari 节点坏掉不要的节点 无法删除解决方法
  • 原文地址:https://www.cnblogs.com/zranguai/p/15057290.html
Copyright © 2020-2023  润新知