专业笔记
文章平均质量分 69
bash编程笔记系列
山岚的运维笔记
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
如何在 Ubuntu 24.04 Linux 中安装 JabRef
本文详细介绍了在Ubuntu 24.04系统上安装文献管理工具JabRef的三种方法:通过.deb包(推荐)、Flatpak和Snap(存在兼容性问题)。安装前需确保系统满足Java环境等基本要求,并提供了详细的安装步骤和命令。文章还包含安装后的配置指南,如创建文献库、设置偏好选项以及与LaTeX编辑器的集成方法,最后给出了卸载说明。JabRef作为开源文献管理工具,能有效提升学术工作效率,特别适合LaTeX用户使用。原创 2026-07-09 10:21:55 · 246 阅读 · 0 评论 -
如何在 Ubuntu 24.04 | 22.04 Linux 或任何版本中使用 MOTD
本文介绍了如何在Ubuntu 24.04/22.04系统中配置MOTD(每日消息)功能,通过编辑/etc/motd文件实现用户登录时显示自定义提示消息。文章详细说明了编辑MOTD文件的方法、查看效果的方式(通过终端切换或SSH登录),以及如何禁用系统默认MOTD消息只显示自定义内容。最后还提供了常见问题解答,包括MOTD文件位置和禁用/启用方法。该功能适用于向系统用户传递重要通知,支持Ubuntu及其他基于Debian的Linux发行版。原创 2026-07-08 08:26:26 · 135 阅读 · 0 评论 -
*Bash* *函数*完整*指南*
本文介绍了bash函数的基本概念和使用方法,主要包括: 定义方式:推荐使用fn_name(){}语法,支持复合命令和子shell执行 变量作用域:默认全局变量,可使用local声明局部变量 参数传递:通过$1、$@等位置参数获取函数参数 返回值:使用return返回0-255的整数值,默认为最后命令的退出码 注意事项:函数与内置命令重名时需使用builtin/command调用原命令 文章还提供了变量作用域、参数处理和返回值等典型用例的代码示例,帮助理解bash函数的核心功能。原创 2026-07-08 08:26:40 · 146 阅读 · 0 评论 -
你是否曾在使用 Vi/Vim 时感到速度缓慢?
Vim/Vi 快速参考指南 本文提供了一份简洁的Vim/Vi备忘清单,涵盖核心命令: 编辑模式:i插入、o新行、r替换等 导航:h/j/k/l移动、G跳转行尾、0/$行首尾 文件操作::w保存、:q!强制退出、:e打开文件 搜索替换:/搜索、:%s/old/new/g全局替换 剪切复制:dd删除行、y复制、p粘贴 高级功能:标记(mA)、撤销(u)、命令映射(:map) 提供PDF/JPEG格式下载,适合打印速查,帮助用户提升Vim/Vim编辑效率。原创 2026-07-07 09:40:54 · 242 阅读 · 0 评论 -
*Linux* sysctl 配置与*调优*脚本
本文提供了一个用于自动化Linux系统sysctl参数调优的shell脚本。作者最初在2010年编写该脚本,用于简化手动配置过程。脚本会根据系统内存自动计算关键参数值(如shmmax、file-max等),支持普通服务器和SSD/高内存服务器的不同配置方案。它覆盖了网络(TCP/IP调优)、内存管理、文件系统等多个方面的内核参数设置,并包含详细注释说明每个参数的作用。使用时需注意版本兼容性,建议用户理解参数含义并根据实际需求调整。文中提供了脚本下载链接,并警告使用风险,强调系统调优没有万能方案。原创 2026-07-07 09:40:36 · 298 阅读 · 0 评论 -
什么是*Bash* *循环*的正确用法?
Bash循环结构指南 本文介绍了Bash脚本中的三种主要循环结构及其应用场景: For循环: 支持两种迭代方式:集合控制循环(类似foreach)和计数控制循环 集合控制循环可遍历列表或数字范围 计数控制循环使用算术表达式,可创建无限循环 While循环: 条件控制循环,当测试条件为真时执行 可结合true命令创建无限循环 适合逐行处理文件内容 Until循环: 与while循环类似,但测试条件为假时执行 可结合false命令创建无限循环 循环控制: 使用break可提前退出循环 使用continue跳过当原创 2026-07-05 09:00:27 · 165 阅读 · 0 评论 -
*Bash* 快速参考:一页 *备忘清单*
摘要: 本文提供了GNU Bash的实用快捷键和通配符备忘清单,帮助用户提升命令行效率。内容包括: 通配符(如*、?、[]、{})的用法示例; Esc键绑定(如删除单词、移动光标); Tab键补全(列出命令、目录、变量等); Ctrl键组合(行首/尾跳转、字符删除、历史搜索等); Alt键功能(大小写转换、单词移动、历史召回等)。 适用于需要快速查阅Bash操作的用户,通过exec bash可重新加载配置。原创 2026-07-05 09:00:15 · 139 阅读 · 0 评论 -
*如何在* *Bash* 中解析 *CSV* 文件?
本文介绍了在Bash中解析CSV文件的两种方法:使用内置命令和使用awk工具。对于简单的CSV文件,可以通过设置IFS变量结合read命令处理,但这种方法无法正确处理包含逗号的引号字段(示例中约6%的记录出错)。更推荐使用GNU awk的FPAT功能,它能正确识别被引号包围的字段,从而准确解析复杂格式的CSV数据。文章还提供了示例代码和注意事项,特别指出这两种方法都不支持包含换行符的字段,这类情况需要更高级的CSV解析工具。原创 2026-07-04 13:11:41 · 302 阅读 · 0 评论 -
移除导入的 *Windows* 文件中的 ^M
本文介绍了不同操作系统在文本文件中使用换行符的差异:Unix/Linux使用LF,Windows使用CR+LF,旧版Mac使用CR。这种差异会导致跨系统文件传输时出现格式问题,如在Linux中显示^M字符。文章提供了多种解决方案:使用dos2unix工具、tr命令转换格式(附有Bash别名设置方法),以及Vim的替换技巧。这些方法能有效解决不同系统间文本文件换行符不兼容的问题,便于文件在跨平台环境中的正常显示和处理。原创 2026-07-04 13:11:27 · 185 阅读 · 0 评论 -
为你的 *Linux*/Unix 服务器选择 *文件系统*
摘要:选择文件系统需综合考虑操作系统版本、存储硬件类型(SSD/HDD等)和工作负载特性(数据库/Web等)。Ext4虽是Linux当前主流,但XFS在MySQL等场景表现更优,需通过SysBench等工具实测。没有通用最优解,关键是根据iostat/dd等工具分析瓶颈,结合数据完整性、容量等需求选择。此外,还需注意I/O调度器(如默认cfq)的配置。(149字)原创 2026-07-03 11:41:37 · 145 阅读 · 0 评论 -
统计目录中文件数量的最佳方法是什么?
本文介绍了在Linux中统计目录文件数量的可靠方法。首先指出常见的ls -la | wc -l方法不可靠,建议改用ls -1bA | wc -l。其次推荐使用find命令的GNU版本配合-printf选项来避免文件名换行符问题。最后提供纯Bash解决方案,通过设置nullglob和dotglob选项配合数组统计文件数,这种方法无需创建子进程且更安全。文章特别强调应避免解析ls输出,并针对不同场景提供了具体命令示例。原创 2026-07-03 11:41:24 · 178 阅读 · 0 评论 -
使用 *sudo* 和 tee 将 stdout 重定向到文件
当需要修改无写权限的文件时,直接sudo echo会失败,因为重定向操作仍受用户权限限制。文章提供了三种解决方案:1) 使用sudo -i切换root身份;2) 通过sudo sh -c执行完整命令;3) 最推荐使用sudo tee(配合>/dev/null可隐藏输出,-a实现追加)。对于Vim用户,可用:w !sudo tee %保存无权限文件。这些方法避免了全局修改权限导致的安全风险,其中sudo tee方案兼具安全性和灵活性,适合脚本自动化场景。原创 2026-07-02 10:34:51 · 134 阅读 · 0 评论 -
使用 *losetup* 和 *dd* 保护敏感数据
本文介绍了一种早期在Linux系统中创建加密存储空间的方法,主要使用losetup和dd工具。首先通过dd创建镜像文件,然后使用losetup设置AES加密的循环设备(需确保内核支持加密模块)。接着用mkfs.ext3格式化加密设备并挂载使用。文章最后提示该方法已过时,建议参考Ubuntu社区2019年的全盘加密指南获取更新方案。需要注意的是,该方法存在安全限制:设备挂载后,任何能访问挂载目录的用户都可读取数据。原创 2026-07-02 10:34:38 · 144 阅读 · 0 评论 -
什么是 *Bash* 空命令?
摘要: Bash 空命令(:)是 POSIX 标准定义的 shell 内置命令,不执行任何操作且始终返回成功状态(0)。它与 true 类似,但作为特殊内置命令,在变量赋值和 POSIX 模式下行为不同。 关键点: 参数展开:空命令会处理参数和重定向(如截断文件 : >file),需注意潜在副作用。 用途: 在 if 语句中占位(如 if cmd; then :; else ...; fi)。 替代 true 实现无限循环(while :; do ...)。 创建块注释(: <<'COMMENT' ...原创 2026-07-01 09:47:16 · 365 阅读 · 0 评论 -
*如何在* *Linux*、*macOS* 和 *Bash* 中格式化*日期*和时间?
本文介绍了在Linux和macOS系统中使用命令行工具处理日期和时间的技巧,重点讲解了date、awk和printf命令的用法。文章首先解释了日期时间处理的复杂性,包括时区、日历类型等概念,然后详细演示了如何使用cal/ncal查看日历,以及利用date命令进行日期格式化、计算和时间戳转换。特别对比了Linux和macOS系统下date命令的差异,并提供了实用的命令示例,如获取当前时间戳、计算日期差值和生成ISO 8601格式日期等。这些技巧对编写自动化脚本和计划任务非常有帮助。原创 2026-07-01 09:47:02 · 220 阅读 · 0 评论 -
如何在 *Bash* 中以及何时使用点命令?
摘要:Bash中的点命令(.)用于在当前shell中执行脚本,而非创建子shell。与source命令同义,它会直接影响当前shell的上下文(如变量、目录)。例如,. myscript.sh会保留脚本中的变量设置,而./myscript.sh则不会。该命令常用于修改环境变量、目录切换或执行无权限的脚本。注意区分点命令与点文件(如.bashrc)和相对路径(如./script.sh)的用法差异。原创 2026-07-01 09:46:45 · 386 阅读 · 0 评论 -
如何在 *Bash* 中使用 *通配符* 进行 *Globbing*?
Bash通配符(、?、[...])是Linux中高效匹配文件名模式的工具,支持单字符(?)、任意长度字符串()和字符范围([a-z])匹配。配合extglob选项可启用扩展模式(如+(pattern)),而globstar选项让**实现递归目录匹配。此外,花括号展开{..}虽非通配符,但常用于生成组合路径(如pic1.{jpg,txt})。两者结合能显著简化文件操作,替代繁琐的手动遍历。注意:通配符属于POSIX标准模式匹配,而花括号展开是独立的文本替换功能。原创 2026-06-30 13:55:49 · 210 阅读 · 0 评论 -
*数学*算术:如何在 *Bash* 中进行计算?
Bash脚本中的数学运算指南 摘要:本文详细介绍了在Bash脚本中执行数学运算的方法,包括整数和浮点数计算。Bash原生支持整数运算,可通过expr、let、declare和算术扩展$(( ))实现。对于浮点运算,需借助外部工具如bc或awk。文章还列出了常用算术运算符,并强调了乘法运算中星号转义的重要性。掌握这些技巧能有效增强脚本的数据处理能力,适用于监控、自动化任务等场景。 关键点: Bash原生仅支持整数运算,浮点运算需外部工具 四种整数运算方法:expr、let、declare -i和算术扩展$((原创 2026-06-30 13:55:07 · 135 阅读 · 0 评论 -
一份关于如何使用Bash 数组的完整指南
和。索引数组有时也被称为列表,而关联数组有时也被称为字典或哈希表。对的支持大大简化了编写 shell 脚本的方式,使你可以实现更复杂的逻辑,或者安全地保留字段分隔。本指南涵盖了标准的bash 数组操作,以及如何声明设置)、追加遍历循环)、检查测试)、访问获取)和删除取消设置索引 bash 数组和关联 bash 数组中的值。详细示例还包括如何排序和打乱数组。👉 Bash 5 版本中进行了许多修复和改进,更多详情请阅读博文。原创 2026-06-30 13:54:32 · 266 阅读 · 0 评论 -
*如何使用* *bc* 进行高级*数学*计算?
本文介绍了Linux中的bc命令行工具,它是一个支持任意精度计算的数学计算器语言,语法类似C语言。文章重点讲解了如何使用bc的数学库函数(如正弦、余弦、对数等)、特殊变量(如scale、ibase等)以及如何编写用户自定义函数。通过示例展示了计算圆周率、阶乘等高级数学运算,并提供了一个简单的交互式计算器脚本。此外,推荐了扩展bc功能的开源资源和GNU官方文档,帮助用户更深入地利用这个工具进行复杂数学计算。bc特别适合在shell脚本中处理需要高精度的数学运算。原创 2026-06-29 21:34:18 · 496 阅读 · 0 评论 -
如何生成字母或数字的*序列*?
本文介绍了在Bash中使用花括号展开和seq命令生成数字/字母序列的方法。花括号展开是Bash内置功能,语法为{起始..结束[..步长]},可生成带前缀的数字序列(如{01..10})或字母序列(如{a..g}),但不支持变量。seq命令适用于数字序列且支持变量,但非所有系统都预装。文中还展示了结合mkdir命令创建目录树等实用示例。推荐优先使用Bash原生花括号展开,而在需要变量时使用for循环替代。原创 2026-06-29 21:34:03 · 328 阅读 · 0 评论 -
如何快速查找 *Bash* 命令的*类型*?
本文介绍了在bash shell中如何使用type和command内置命令来识别命令类型。这两个POSIX标准命令可以显示命令是别名、函数、内置命令还是外部文件。type -t可简洁输出命令类型,type -a显示所有可能的解释。通过type -p或command -v可获取命令路径并检查是否存在。文章还对比了不同命令的输出格式,并演示了如何查看自定义别名和函数的定义。这些技巧对于调试脚本和确保命令行为一致性非常有用。原创 2026-06-29 21:33:52 · 269 阅读 · 0 评论 -
*如何*编写无错误的 *Bash* *If 语句*脚本?
摘要: Bash 中的 if 语句是条件表达式,用于根据测试结果(退出状态为 0 表示成功)执行代码块。语法包括 if-then、elif 和 else 子句,支持算术和逻辑测试。测试条件可通过 ((...))(算术)、[...](POSIX 标准)或 [[...]](Bash 扩展,支持正则和模式匹配)实现。条件表达式涵盖文件状态(如 -f 检测文件存在)、字符串比较(如 -z 检测空字符串)等。[[...]] 更灵活,避免常见错误(如单词分割),推荐用于复杂条件。原创 2026-06-28 10:03:36 · 262 阅读 · 0 评论 -
*如何* 重新加载或更改当前 *Shell*?
本文介绍了Linux中exec命令的用法,重点讲解了如何在不注销的情况下重新加载bash shell(如.bashrc等配置文件更新后)。主要内容包括:exec命令会替换当前进程而非创建新进程;通过exec bash或exec $SHELL重新加载shell;GNOME图形界面shell的两种重载方法(不同版本操作不同);以及exec在非交互式shell中的注意事项。最后还提到exec可用于重定向所有输出到文件,适用于脚本日志记录场景。全文提供了具体命令示例和使用场景说明。原创 2026-06-28 10:03:22 · 199 阅读 · 0 评论 -
精细调优 *Linux* *Apache* *MySQL* *PHP*(LAMP)服务器
本文分享了针对LAMP服务器的调优经验,适用于Debian系统(内核2.4.32)、1GB内存、Celeron 2.66GHz配置,运行Apache 2.2.2、PHP 5.1.4和MySQL 5.0.21。作者通过升级内核至2.6.18并更新软件版本开始优化,随后调整了各项配置: Apache:启用KeepAlive(超时4秒)、限制进程数为60、预启动30个子进程、关闭非必要信息显示,显著降低内存占用(约600MB)。 PHP:部署eaccelerator(32MB共享内存),禁用脚本修改检查以减少磁盘原创 2026-06-28 10:03:07 · 169 阅读 · 0 评论 -
将正在运行的 shell 进程从当前终端剥离,并重新挂载到新的 screen 会话中
别再担心 VPN 连接断开导致远程任务被杀掉了。你可以通过分离 screen 会话并在稍后重新连接,以安全可控的方式从笔记本电脑或台式机连接到远程服务器工作。原创 2026-06-27 17:22:08 · 155 阅读 · 0 评论 -
关于如何使用 *Bash* *别名* 的快速 *指南*
摘要: Bash别名是简化常用命令的快捷方式,通过alias 别名="命令"定义,避免使用特殊字符。别名保存在.bashrc或.bash_aliases中,修改后需重新加载Shell生效。示例包括ls相关别名。注意别名无递归展开(如la不会继承ls的-l参数),且非交互式Shell需启用expand_aliases选项。复杂需求建议用函数替代。 管理别名: 查看:alias -p或遍历$BASH_ALIASES数组(不推荐直接操作数组)。 删除:unalias 别名或unalias -a清空所有。 注意:直原创 2026-06-27 17:21:09 · 261 阅读 · 0 评论 -
*Bash* *错误*:分配关联*数组*时必须使用下标
本文介绍了Bash关联数组的使用注意事项。当声明关联数组时,必须为每个键值对指定下标(键),否则会出现"must use subscript when assigning associative array"错误。下标需用方括号[]包裹,整个复合赋值需用圆括号()括起。文章通过错误示例展示了三种常见错误(缺少下标、部分缺少下标、格式错误),并给出了正确的声明方式:一种是先声明数组后逐个赋值,另一种是直接在声明时初始化键值对。正确使用下标是操作Bash关联数组的关键。原创 2026-06-27 17:20:23 · 328 阅读 · 0 评论 -
从 *Bash* Shell 下载文件
本文介绍了三种在Bash脚本中下载文件的方法:1)使用wget工具,支持HTTP/HTTPS/FTP协议;2)使用curl工具,支持多种协议传输;3)通过Bash重定向利用/dev/tcp伪设备实现纯脚本下载。重点展示了一个自定义_get函数,它通过TCP连接手动发送HTTP请求获取文件,适合无专用下载工具的环境。三种方法各有优势,可根据系统环境和需求选择使用。原创 2026-06-26 12:33:01 · 217 阅读 · 0 评论 -
编写高质量 *Bash* *注释* 时应避免的 5 个 *错误*
本文介绍了Bash脚本中注释的最佳实践和常见错误。Bash仅支持单行注释(以#开头),但可通过heredoc配合null命令实现多行注释(需对分隔符使用单引号)。文章重点指出了5个应避免的错误:1)缺少文件头注释(应包含用途、作者和版权信息);2)函数注释不完整(需说明功能、参数、输出等);3)过度注释简单代码;4)TODO注释格式不一致;5)非常规块注释可能导致的维护问题。强调注释应保持简洁一致,以提升脚本可读性和可维护性。原创 2026-06-26 12:31:34 · 210 阅读 · 0 评论 -
sudo:抱歉,你必须有一个 tty 才能运行 sudo
本文解释了SSH远程执行sudo命令时出现"sudo: sorry, you must have a tty to run sudo"错误的解决方法。该错误是由于sudo默认配置需要tty终端导致的。文章提供了两种解决方案:1) 修改/etc/sudoers文件,全局或针对特定用户/命令禁用requiretty选项;2) 使用SSH的-t参数强制分配伪终端。对于自动化脚本等场景,推荐第一种方法通过修改sudoers文件永久解决问题。文章还简要介绍了sudo和tty的基本概念,并指出某些Linux发行版默认启原创 2026-06-26 12:30:37 · 261 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第66章:陷阱(Pitfalls)
Bash 脚本常见陷阱与解决方案摘要 本文列举了 Bash 脚本编写中的常见错误和意外行为,主要包括: 变量引用问题:未加引号的变量会导致空格和通配符处理异常 文件处理陷阱:遍历 ls 输出、路径含特殊字符时的处理 条件判断误区:[ ] 和 [[ ]] 的区别,变量空值处理 管道问题:退出码丢失、子Shell变量隔离 目录切换风险:未检查 cd 命令是否成功 正则表达式使用:=~ 运算符的正确用法 脚本执行权限:忘记 chmod +x 变量初始化:未设置默认值导致意外行为 POSIX兼容性:在 #!/bin原创 2026-06-25 09:44:45 · 252 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第65章:设计模式
本章介绍了 Bash 脚本编程中的常见设计模式和最佳实践,包括安全脚本模板、错误处理、参数解析、临时文件管理、数组操作等实用技巧。重点内容包括:使用set -euo pipefail提高脚本健壮性;采用getopts进行参数解析;利用trap实现资源清理;正确处理管道中的变量作用域;使用数组和mapfile高效处理数据;避免eval改用间接引用等。这些模式能帮助开发者编写更可靠、可维护的 Shell 脚本,解决常见的安全性和健壮性问题。原创 2026-06-25 09:44:29 · 256 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第64章:URL 解码
本文介绍了在Bash脚本中实现URL解码的多种方法。主要内容包括:1) 使用printf和sed的基本解码;2) 处理+号替换空格的完整解码函数;3) 使用sed逐字符转换的可靠方法;4) 避免命令注入的安全版本;5) 利用perl或xxd的一行命令方案;6) 处理Unicode字符的注意事项;7) 解析URL查询字符串的完整示例。文章还补充了URL编码的实现方法,并强调了不同场景下的注意事项,如+与%20的区别、安全性考虑和性能优化建议。各种方法都附有代码示例,便于实际应用。原创 2026-06-25 09:44:15 · 375 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第63章:并行(parallel)
本文介绍了在Bash脚本中实现并行处理的三种方法:1) 使用后台作业(&)和wait命令实现基本并行;2) 利用xargs的-P选项控制并发进程数;3) 使用功能强大的GNU Parallel工具。文章详细说明了每种方法的语法和典型应用场景,包括批量处理文件、远程执行任务等,并提供了性能优化建议和注意事项,如控制并发数、处理输出竞态条件等。特别强调了GNU Parallel的高级特性,如进度条显示、任务恢复、多机分发等功能,是处理大规模并行任务的理想选择。原创 2026-06-25 09:44:02 · 172 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第62章:网络命令
Bash 脚本中经常需要与网络交互。本章介绍常用的网络命令,包括检查连通性、下载文件、发送请求、端口扫描以及远程执行命令等。原创 2026-06-24 15:19:50 · 235 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第61章:何时使用 eval
eval是Bash中一个强大但危险的内建命令,它能够将参数作为Shell代码执行。合理使用场景包括动态生成变量名、执行命令字符串中的变量展开等,但必须严格避免处理用户输入或未知来源的数据,否则可能导致命令注入。安全替代方案包括使用数组存储命令参数、间接引用${!var}以及printf -v等。遵循"绝不将未过滤的用户输入传递给eval"的黄金法则,在大多数情况下应优先选择更安全的替代方案而非eval。原创 2026-06-24 15:19:41 · 175 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第59章:CGI 脚本
摘要: Bash脚本可作为CGI程序在Web服务器上运行,处理HTTP请求并生成动态内容。基本要求包括服务器配置、脚本权限和正确的HTTP头输出。脚本可处理GET/POST请求,解析环境变量和查询参数,输出HTML、JSON等格式,并支持重定向和Cookie设置。安全方面需防范命令注入和路径遍历。性能上,Bash CGI因进程开销不适合高并发,复杂场景建议换用Python等语言。调试时可模拟环境变量,配置Apache/Nginx时需启用ExecCGI。适用于简单场景,但需注意安全性和效率限制。(150字)原创 2026-06-24 15:19:32 · 162 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第60章:select 关键字
Bash中的select命令是一个用于创建简单交互式菜单的循环结构。它会自动显示带编号的选项列表,等待用户输入数字选择,并将对应选项赋值给变量。基本语法为select 变量 in 列表; do 命令; done,常配合case语句使用。通过设置PS3变量可自定义提示符,REPLY变量会保存用户输入的数字。典型应用场景包括:创建服务管理菜单、文件选择器或配置选项界面。该命令默认会循环显示菜单,需用break退出循环。虽然功能有限,但非常适合快速构建命令行交互界面,是Shell脚本中实现用户友好选择的便捷工具。原创 2026-06-24 15:19:18 · 172 阅读 · 0 评论 -
Bash 专业人员笔记 -- 第58章:全局与局部变量
Bash变量作用域解析:全局变量默认全局可见,函数内未声明直接赋值的变量会修改全局变量。使用local声明局部变量可限制作用域仅在函数内有效,子函数可继承父函数的局部变量。注意事项包括:1)避免未声明局部变量意外修改全局变量;2)管道和命令替换会创建子Shell导致变量修改失效;3)只读变量不能被覆盖。最佳实践建议函数内始终使用local声明变量,全局变量采用大写命名规范,并通过declare -g谨慎修改全局状态。常见陷阱包括变量意外覆盖、子Shell作用域隔离等问题,可通过declare -p命令检查变原创 2026-06-23 09:51:22 · 509 阅读 · 0 评论
分享