• Shell脚本基础


    Shell脚本基础

    变量

    什么是变量?

    变量即可以变化的量

    变量名称注意事项

    • 只能包含字母、数字、下划线,并且不能以数字开头
    • 不应该跟系统中已有的环境变量重名,尽量不要全部使用大写,尽量不要用“_”下划线开头
    • 最好做到见名知义
    • 不能使用程序中的保留字,例如if、for等

    变量类型

    • 字符型
    • 数值型
      • 整型
      • 浮点型
    • 布尔型

    变量操作

    • 设置变量
    • 引用变量
    • 撤销变量

    单引号与双引号的区别

    bash变量类型

    • 环境变量
    • 本地变量(局部变量)
    • 位置变量
    • 特殊变量(bash内置的,用来保存某些特殊数据的变量,也称系统变量)

    本地变量

    VAR_NAME=VALUE      //本地变量,作用域为当前shell进程。对当前shell外的其它shell进程,包括当前shell的父shell、子shell进程均无效
    
    local VAR_NAME=VALUE    //局部变量,作用域为当前代码段,常用于函数
    

    环境变量

    export VAR_NAME=VALUE   //作用域为当前shell进程及其子进程
    
    [root@node0 ~]# export a=1
    [root@node0 ~]# echo $a
    1
    //启用子进程
    [root@node0 ~]# bash
    [root@node0 ~]# echo $a
    1 #依然生效
    

    位置变量

    $1 $2 //用来引用脚本的参数 数字代表位置
    shift [num] //使用完后退出,后面向前推进
    
    [root@yqh ~]# cat test.sh
    #!/bin/bash
    for i in $*;do
    echo $1
    shift 2
    [root@node0 ~]# ./test.sh a b c d e #传递5个参数循环5次,位置1执行参数是a,向后推2个是c,再就是e,e后面没有参数,则再输出2次e完成
    a
    c
    e
    e
    e
    

    特殊变量

    $#      //是传给脚本的参数个数
    $0      //是脚本本身的名字
    $!      //是shell最后运行的后台Process的PID
    $@      //是传给脚本的所有参数的列表
    $*      //是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
    $$      //是脚本运行的当前进程ID号
    $?      //是显示上条命令的退出状态,0表示没有错误,其他表示有错误
    

    bash内建环境变量

    PATH #寻找命令路径
    [yqh@yqh ~]$ echo $PATH
    /home/yqh/.local/bin:/home/yqh/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbinSHELL #查看当前shell
    [yqh@yqh ~]$ echo $SHELL
    /bin/bash
    
    UID #查看当前用户uid
    [yqh@yqh ~]$ echo $UID
    1000
    
    HISTSIZE #查看可存储历史记录总大小
    [yqh@yqh ~]$ echo $HISTSIZE
    1000
    
    HOME #查看当前用户家目录
    [yqh@yqh ~]$ echo $HOME
    /home/yqh
    
    PWD #查看用户当前所在位置
    [yqh@yqh /]$ echo $PWD
    /
    
    HISTFILE #查看当前用户历史记录文件储存位置
    [yqh@yqh /]$ echo $HISTFILE
    /home/yqh/.bash_history
    
    PS1 #定义系统提示符的变量
    [yqh@yqh /]$ echo $PS1
    [u@h W]$
    

    写脚本的思路

    编写流程

    • 先手动部署确立完成思路
    • 分类和分析
    • 通用性
    • 写脚本
      • 开2个终端,一个写脚本,一个测试
    • 测试
      • 功能写完后立即测试(运行2遍以上确保通用性)

    shell脚本编程注意事项

    • 指定bash(#! /bin/bash)可能出现默认sh不是bash的情况

    • 禁止将未执行的代码直接写入脚本

    • 脚本中的命令一定要用绝对路径

    • 注意local,bash中如果不在变量前添加local默认是全局变量,添加后只在当前代码段生效

    • 使用sheelcheck检查语法

  • 相关阅读:
    C#之Attribute(特性)
    MongoDB 学习笔记
    WCF学习笔记(基于REST规则方式)
    一个简单的WebService实例
    简单的NHibernate学习笔记
    ASP.NET MVC 搭建简单网站 --1.前端页面布局和基本样式实现
    sql触发器知识
    Aspose.Cells.dll引用导入导出Excel
    Sql语句批量更新数据(多表关联)
    JsTree异步加载数据实现多级菜单
  • 原文地址:https://www.cnblogs.com/yuqinghao/p/14592765.html
Copyright © 2020-2023  润新知