博客
关于我
shell脚本——shell编程规范与变量
阅读量:694 次
发布时间:2019-03-17

本文共 1476 字,大约阅读时间需要 4 分钟。

Shell脚本——Shell编程规范与变量

一、Shell脚本概述

1. Shell的概念

Shell脚本(Shell Script)是一种用于执行一系列命令的文本文件,将这些命令按顺序存储,便于批量操作或定时执行,主要应用于系统管理员的日常管理任务。

2. Shell的作用——“命令翻译器”

Shell作为连接系统内核和用户的桥梁,负责将用户输入的命令解释并转化为系统内核能够执行的操作,最后将执行结果反馈给用户。

3. Shell脚本的应用场景
  • 重复性操作:适合处理大量相同或相似的任务。
  • 交互性任务:涉及用户交互的应用。
  • 批量事务处理:处理需要大量文件或数据的任务。
  • 服务运行状态监控:定期检查系统运行状态。
  • 定时任务执行:通过crondisk定时启动脚本任务。

二、Shell编程规范

1. 用户登录Shell

默认登录Shell程序为/bin/bash,各类shell的内部指令和环境差异较大,具体特性需结合使用的shell具体情况。

2. Shell脚本的组成
  • 脚本宣言:使用#!/bin/bash等注明解释器。
  • 注释信息:以#开头的行为注释,不会被执行。
  • 可执行语句:如echo命令用作信息输出。
3. Shell脚本的执行
  • 通过命令执行
    • 绝对路径:/root/first.sh
    • 相对路径:./first.sh
  • 通过指定Shell解释脚本
    • 使用特定Shell:sh first.sh
    • 在当前目录中运行:. first.shsource first.sh
  • 三、管道

    1. 管道的使用场景

    将命令行的输出作为下一个命令的输入,实现命令组合。

    2. 常见管道格式
    命令1 | 命令2 | ... | 命令n

    四、重定向

    1. 重定向的文件类型
    • 标准输入(stdin):/dev/stdin
    • 标准输出(stdout):/dev/stdout
    • 标准错误输出(stderr):/dev/stderr
    2. 重定向操作符
    • >:将输出覆盖到指定文件。
    • >>:将输出追加到指定文件。
    • 2>:将错误输出覆盖到指定文件。
    • 2>>:将错误输出追加到指定文件。
    • >&:将标准输出与错误输出结合。
    • 2>&1:将错误输出与标准输出结合。

    五、Shell脚本变量

    1. 变量的作用

    变量用于存储系统或用户特定的参数,变量名由字母或下划线构成,区分大小写。

    2. 变量类型
  • 自定义变量:用户定义的变量,可随意修改。
  • 特殊变量
    • 环境变量:由系统维护,设置工作环境。
    • 只读变量:用户不可修改。
    • 位置变量:通过命令行传递参数。
    • 预定义变量:bash内置变量,不能直接修改。
  • 六、Shell脚本变量——自定义变量

    1. 定义变量
    变量名=变量值
    • 变量命名规则:以字母或下划线开头,区分大小写,建议使用全大写。
    • 示例:

    my_var="Hello, World!"

    ##### 2. 查看变量值使用`echo`命令查询:```bashecho $my_var
    3. 赋值技巧
    • 双引号:支持变量引用,$保留为字面字符。
    • 单引号$视为普通字符,不进行变量替换。
    • 反撇号:执行命令并提取输出结果。
    4. 从键盘读取输入
    • 方法一(带提示信息):
      read -p "请输入内容:" my_input
    • 方法二(无提示信息):
      read my_input
    5. 占位符

    使用占位符进行赋值,如$1代表第一条命令线参数。

    七、Shell脚本变量——特殊变量

    • 环境变量:如PATHHOME,由系统维护。
    • 位置变量:通过传递参数访问如$1$2
    • 预定义变量:如UIDGID,不能修改。

    转载地址:http://riphz.baihongyu.com/

    你可能感兴趣的文章
    Vue踩坑笔记 - 关于vue静态资源引入的问题
    查看>>
    Netty工作笔记0025---SocketChannel API
    查看>>
    Netty工作笔记0027---NIO 网络编程应用--群聊系统2--服务器编写2
    查看>>
    Netty工作笔记0050---Netty核心模块1
    查看>>
    Netty工作笔记0057---Netty群聊系统服务端
    查看>>
    Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
    查看>>
    Netty工作笔记0063---WebSocket长连接开发2
    查看>>
    Netty工作笔记0070---Protobuf使用案例Codec使用
    查看>>
    Netty工作笔记0077---handler链调用机制实例4
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty工作笔记0085---TCP粘包拆包内容梳理
    查看>>
    Netty常用组件一
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty心跳检测机制
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架内的宝藏:ByteBuf
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—3.Reactor线程模型三
    查看>>