博客
关于我
Shell编程规范与变量
阅读量:378 次
发布时间:2019-03-05

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

Shell编程规范与变量

Shell脚本概述

Shell是一种特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色。它负责接收用户输入的操作指令并进行解释,将需要执行的操作传递给内核执行,并输出执行结果。Bash(/bin/bash)是目前大多数 Linux 版本采用的默认 Shell,各 Shell 之间在内部指令和运行环境上可能存在差异。

Shell的作用

Shell的主要作用是作为命令解释器,充当用户与系统之间的桥梁。它的核心功能包括:

  • 介于系统内核与用户之间,负责解释命令行输入
  • 将用户输入的命令转化为系统内核能够理解的操作
  • 输出执行结果或错误信息
  • Shell脚本的概念

    Shell脚本是一种通过保存并执行一系列命令的文本文件来实现的自动化操作。其主要特点包括:

  • 脚本文件需要赋予可执行权限
  • 可以结合 Shell 的控制语句,实现复杂操作
  • Shell脚本的应用场景

    Shell脚本广泛应用于以下场景:

  • 重复性操作
  • 交互式任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行
  • Shell脚本的构成与编写

  • 脚本声明:第一行为“#!/bin/bash”,表示脚本使用 Bash 解释。
  • 注释信息:以“#”开头的语句为注释,不会被执行。
  • 可执行语句:如 echo 命令用于输出字符串。
  • Shell脚本的执行

  • 通过命令赋予可执行权限

    • 绝对路径:chmod +x /root/first.sh
    • 相对路径:chmod +x ./first.sh
  • 指定 Shell 解释脚本

    • 使用 sh 命令:sh first.sh
    • 使用 source 命令:source first.sh. first.sh
  • 重定向和管道操作

  • 标准输入、输出和错误

    • 标准输入/dev/stdin
    • 标准输出/dev/stdout
    • 标准错误/dev/stderr
  • 重定向操作

    • >:将标准输出保存到指定文件
    • >>:将标准输出追加到指定文件
    • 2>:将标准错误保存到指定文件
    • 2>>:将标准错误追加到指定文件
    • &>:将标准输出和标准错误混合保存
    • 2>&1:将标准错误重定向到标准输出
  • 管道操作

    • 使用 | 将命令的输出作为下一个命令的输入
    • 示例:ps aux | wc -l
  • Shell变量的作用与分类

  • 变量的作用

    • 用于存储系统和用户需要使用的特定参数或值
  • 变量分类

    • 自定义变量:由用户定义和修改
    • 环境变量:由系统维护,设置工作环境
    • 位置变量:通过命令行传递参数
    • 预定义变量:Bash 内置变量,不能直接修改
  • 自定义变量

  • 变量赋值

    • 单引号:$ 不被解析
    • 双引号:$ 可以解析其他变量
    • 反撇号:用于命令替换
  • 从键盘获取输入

    • 使用 read 命令:read -p "提示信息" 变量名
  • 变量作用范围

    • 局部变量:只在当前 Shell 环境中有效
    • 全局变量:通过 export 命令导出
  • 整数运算

    • 使用 expr$(()) 计算
  • 浮点运算

    • 使用 bcawk 进行浮点运算
  • 特殊的 Shell 变量

  • 环境变量

    • 常用环境变量:USERHOMEPATHPWDLANG
  • 只读变量

    • 使用 readonly 命令设置只读变量
  • 位置变量

    • $n:表示命令或脚本的参数,$0 表示脚本名称
  • 预定义变量

    • $*$@:处理命令或脚本参数
    • $#:表示参数个数
    • $?:表示前一条命令的返回状态
  • 转载地址:http://kwag.baihongyu.com/

    你可能感兴趣的文章
    poj 3628 Bookshelf 2
    查看>>
    Qt笔记——官方文档全局定义(一)Types数据类型
    查看>>
    POJ 3670 DP LIS?
    查看>>
    POJ 3683 Priest John's Busiest Day (算竞进阶习题)
    查看>>
    POJ 3988 Selecting courses
    查看>>
    POJ 4020 NEERC John's inversion 贪心+归并求逆序对
    查看>>
    poj 4044 Score Sequence(暴力)
    查看>>
    POJ 基础数据结构
    查看>>
    POJ 题目3020 Antenna Placement(二分图)
    查看>>
    Poj(1797) Dijkstra对松弛条件的变形
    查看>>
    SpringBoot为什么不需要xml配置文件?
    查看>>
    POJ--2391--Ombrophobic Bovines【分割点+Floyd+Dinic优化+二分法答案】最大网络流量
    查看>>
    Qt笔记——SQLite初探QSqlDatabase QSqlQuery
    查看>>
    POJ-1163-The Triangle
    查看>>
    POJ-Fence Repair 哈夫曼树
    查看>>
    poj1061 - 同余方程,二元一次不定方程
    查看>>
    Qt笔记——SQLite再探
    查看>>
    poj1068Parencodings
    查看>>
    poj1182(带权并查集)
    查看>>
    POJ1182(带权并查集)
    查看>>