第1章 Shell编程规范与变量

Shell脚本

概念

  • 将要执行的命令按顺序保存到一个文本文件
  • 给该脚本文件可执行权限
  • 可结合各种Shell控制语句以完成更复杂的操作

执行命令流程的交互区别

  • 交互式
    • 用户直接与命令行交互,实时输入和接收命令行程序的输出
  • 非交互式
    • 命令在执行时按照脚本文件中预先定义好的指令顺序执行,并且通常不会从用户终端获取输入
    • Shell脚本执行的流程就是非交互式

Shell脚本应用场景

  • 重复性操作
  • 交互性任务
  • 批量事务处理
  • 服务运行状态监控
  • 定时任务执行
  • 巡检

Shell的作用

  • Shell的作用 —— 命令解释器,“翻译官”

    • 介于系统内核与用户之间,负责解释命令行,解释的结果发送给内核,内核再向硬件发送指令。
    • 每个操作系统都可以支持多个不同的解释器
    • 每个系统的解释器不一定支持相同的脚本

重定向

重新定义输出的方向

  • 尖括号往右指是重定向标准输出 >、>>
  • 尖括号往左指是重定向输入

错误重定向

把提示的错误信息单独提取出来放入文本中

  • 标准输出:1>
    • 正常信息输出到指定文件,错误信息在终端显示
  • 错误输出:2>
    • 正常信息在终端显示,错误信息输出到指定文件中
  • 标准输出和错误输出同时重定向:&>
    • 正常信息和错误信息都输出到指定文件中

管道符

作用:过滤

比如要只查看根分区的挂载信息

使用 df 命令并通过管道符过滤

  • $符在文本前表示以文本开头:grep "$text"
  • $符在文本后表示以文本结尾:grep "text$"

相关命令

命令

说明

df -h | grep "d"

显示df命令输出的内容中包含 "d" 的行

df -h | grep "/$"

显示df命令输出的内容中以 " / " 结尾的行

df -h | grep "/$" | awk '{print $6}'

显示df命令输出的内容中以 " / " 结尾的行中的第6列

grep "root" /etc/passwd | grep "bash"

显示/etc/passwd文件内容以root开头bash结尾的行

变量

变量是用于存储数据值的名称

变量一般存放在内存中,所以当重启主机后,没有文件保存的变量会消失

命名规则

  • 变量名只能由字母、数字和下划线组成,但不能以数字开头(或纯数字)。
  • 变量名=值

引号

  • 如果声明字符串,并且字符串中带有空格的情况下,要加引号
  • 如果要声明数字,就不能加引号

变量作用范围

局部变量

  • 当声明完一个变量后,默认为局部变量,只会在本Shell下生效,进入一个子bash环境会找不到该变量
  • 因为这样声明的变量是局部变量,只针对Shell解释器

全局变量

  • 使用export命令导出指定变量为全局变量
  • 也可以在声明变量时直接设置为全局变量

变量查看

命令

说明

env

列出全局变量

set

列出当前Shell中的所有变量

特殊变量

变量

说明

echo $#

显示脚本后所跟参数的数量

echo $*

显示脚本后添加的参数

echo $@

将所有位置参数作为单独的字符串显示,而不是像echo $* 变量整理为一整个字符串

echo $0

显示当前脚本的/相对路径

echo $!

显示上一个进程的进程号

echo $$

显示当前进程的进程号

echo $?

检查上一个指令执行的状态结果

注:状态正常就显示0

状态不正常就显示非0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值