博客
关于我
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/

    你可能感兴趣的文章
    no session found for current thread
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>
    no1
    查看>>
    NO32 网络层次及OSI7层模型--TCP三次握手四次断开--子网划分
    查看>>
    NOAA(美国海洋和大气管理局)气象数据获取与POI点数据获取
    查看>>
    NoClassDefFoundError: org/springframework/boot/context/properties/ConfigurationBeanFactoryMetadata
    查看>>
    node exporter完整版
    查看>>
    Node JS: < 一> 初识Node JS
    查看>>
    Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime(72)
    查看>>
    Node 裁切图片的方法
    查看>>
    Node+Express连接mysql实现增删改查
    查看>>
    node, nvm, npm,pnpm,以前简单的前端环境为什么越来越复杂
    查看>>
    Node-RED中Button按钮组件和TextInput文字输入组件的使用
    查看>>
    Node-RED中Switch开关和Dropdown选择组件的使用
    查看>>
    Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
    查看>>
    Node-RED中使用JSON数据建立web网站
    查看>>
    Node-RED中使用json节点解析JSON数据
    查看>>
    Node-RED中使用node-random节点来实现随机数在折线图中显示
    查看>>
    Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
    查看>>