资讯动态

Shell 脚本编程从入门到进阶:完整学习笔记

发布时间:2026/10/14 9:33:35 来源:尧图企业网站定制
1.1 什么是 ShellShell 是 Linux 操作系统中的命令解释器将用户输入的命令转换为计算机可执行的指令并传递给内核执行用户和内核之间的“翻译官”并且把结果反馈给用户。1.2 Shell 的三大功能命令翻译把命令翻译成内核能看懂的指令。输入与输出管理管理数据从哪来到哪去。编程能力把命令写成脚本自动执行。1.3 常见 Shell 类型/bin/bash默认 ShellCentOS / RedHat 都用它。/bin/shbash 的祖先已软连接到 bash。/bin/tcshcsh 的增强版。1.4 查看当前 Shellcat /etc/shells查看系统支持的所有 Shell。echo $SHELL查看当前使用的 Shell。二、Shell 脚本编写与执行2.1 Shell 脚本的构成第一行#!/bin/bash默认的解释器脚本声明。第二行#注释脚本内容。后面行实际执行的命令语句。2.2 Shell 脚本的执行命令是否需要执行权限执行环境路径执行需要子 Shellbash xxx.sh执行之后变量消失不需要子 Shellsource xxx.sh执行完后变量保留不需要当前 Shellsh xxx.sh输入重定向sh xxx.sh 与其大致相同不需要子 Shell2.3 创建流程创建文件 → 添加权限 → 检查语法 → 执行脚本。三、变量基础3.1 变量基本操作基本引用likesleepecho 我没事的时候就$likeecho 我${like}的时候就没事查看与删除查看所有变量set删除变量unset name3.2 echo 命令高级用法-n不输出末尾换行。-e开启 \ 转义解析识别转义符。\n换行。\tTab 制表位。\c不换行输出后停止不再输出内容。\b退格删除前面一个字符。\\输出一个 \ 本身。\r回车光标调到本行开头。\a终端蜂鸣提示音。四、特殊变量4.1 三种引号核心区别单引号 原样输出里面内容不解析变量 $ 不生效。双引号 会解析变量 $、转义符保留空格。反撇号 命令替换执行里面命令把输出赋值给变量替代$()更容易嵌套。示例namelinuxecho $name→ 输出nameecho $name→ 输出linuxecho date等价于echo $(date)→ 执行 date 命令输出当前时间。4.2 read 命令读取用户输入交互式输入常用选项-p显示提示。-n限制字符数。-s静默输入。-t超时秒数。演示read -p your name: nameecho welcome$name!五、变量运算加减乘除5.1 整数运算expr 运算基础运算 加、- 减、* 乘、/ 除、% 取余。运算符两边必须有空格乘法需要转义expr 2 \* 3。输出变量a128 b2sum$a$b或sum$(expr $a $b)echo $sumecho $[] 或 $(())比 expr 更简洁乘法不用转义。5.2 小数运算bc 计算器浮点运算echo scale2;10/3 | bc5.3 let 命令直接修改变量赋值等号两边绝对不能有空格表达式可加可不加。举例expr 方式num10expr $num 5输出 15但 num 仍是 10。let 方式num10let numnum5echo $num变成 15。自增自减num10let num或let num--num 变成 11 或 10。幂运算let 特有num2let numnum**10六、变量的类型与作用范围6.1 自定义变量与环境变量自定义变量用户自己定义仅当前 Shell 可用子 Shell 无法读取。环境变量系统预定义的公共变量子 Shell 也可以使用。常见有$USER当前用户名、$HOME用户主目录、$PWD当前工作目录、$SHELL默认 Shell、$LANG系统语言、$RANDOM随机数、$UID用户 ID 等。$PATH为命令搜索路径系统在此路径下查找命令不要清空 PATH否则系统命令全部失效。6.2 内置特殊变量位置变量脚本接收命令行参数执行脚本后跟参数通过位置变量获取$0脚本本身名称。$n第 n 个脚本参数。$#传入参数总个数。$*全部参数作为一整个整体。$全部参数保留各自独立。$?上一条命令的返回状态码。$$当前脚本 PID。$!后台运行的最后一个进程 PID。预定义特殊变量$?上一条命令退出状态码0 代表执行成功非 0 代表失败脚本经常用来做判断。$$当前 Shell / 脚本的进程 PID。$!最后一个后台运行进程的 PID。6.3 只读变量 readonly使用 readonly 把变量设置为只读定义后值不能修改也不能 unset 删除。两种写法定义同时设置只读对已有变量设置只读。6.4 export 导出变量默认自定义变量只在当前 Shell 生效子 Shell 看不见。export 变量名将变量导出为环境变量子 Shell 可以继承读取该变量。export -n 变量取消导出。三种用法先定义再导出定义时直接 exportexport -n 取消导出。6.5 核心总结普通变量仅限当前 Shellexport 导出后子 Shell 可见readonly 禁止修改删除位置变量接收脚本参数$?判断命令执行结果。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑