发布时间:2026/8/13 0:42:28
Bash 脚本进阶:declare 命令完整详解(变量属性、数组、只读实战) 1. 命令简介declare 是 Bash 内建命令用于声明、设置或显示变量的值和属性。它可以创建具有特定属性如只读、整型、数组等的变量也可以显示现有变量的属性和值。该命令在脚本编程中常用于精确控制变量的行为。2. 语法格式bash运行declare [-aAfFgilnrtux] [-p] [name[value] ...]3. 常用选项及说明3.1 显示控制选项表格选项说明-f将操作限制为函数名及函数定义-F仅显示函数名调试时可附加行号和源文件-g在 Shell 函数中使用时创建全局变量其他情况下忽略-p显示指定变量的属性和值未指定变量名时显示所有变量3.2 属性设置选项表格选项说明-a将变量声明为索引数组-A将变量声明为关联数组Bash 4.0-i将变量声明为整型赋值时自动进行算术运算-l赋值时自动将值转换为小写-u赋值时自动将值转换为大写-n为变量设置引用属性指向另一个变量-r将变量声明为只读不可修改和删除-t为变量设置追踪属性用于函数-x将变量导出为环境变量相当于 export3.3 属性删除选项表格选项说明a注意不能用于取消数组属性A注意不能用于取消关联数组属性i删除整型属性l删除小写转换属性u删除大写转换属性n删除引用属性t删除追踪属性x删除导出属性r注意不能用于删除只读属性4. 示例用法4.1 基本变量声明bash运行# 声明普通变量 declare my_varHello World echo $my_var # 输出: Hello World # 显示变量的属性 declare -p my_var # 输出: declare -- my_varHello World4.2 整型变量bash运行# 声明整型变量 declare -i num5 numnum3 echo $num # 输出: 8 # 自动进行算术运算 declare -i a6 b8 result resultab echo $result # 输出: 144.3 大小写转换属性bash运行# 自动转换为大写 declare -u upper_varhello echo $upper_var # 输出: HELLO # 自动转换为小写 declare -l lower_varWORLD echo $lower_var # 输出: world4.4 数组操作bash运行# 声明索引数组 declare -a colors(red green blue) echo ${colors[1]} # 输出: green # 声明关联数组 declare -A person person[name]John person[age]25 echo ${person[name]} # 输出: John4.5 只读变量bash运行# 声明只读变量 declare -r readonly_varCannot change readonly_varnew value # 错误: readonly_var: readonly variable # 显示所有只读变量 declare -r4.6 导出变量bash运行# 声明并导出变量 declare -x PATH/usr/local/bin:$PATH # 等同于 export PATH/usr/local/bin:$PATH4.7 函数相关操作bash运行# 定义函数 function my_func() { echo This is a function } # 显示所有函数定义 declare -f # 仅显示函数名 declare -F # 显示特定函数 declare -f my_func4.8 在函数中使用全局变量bash运行function test_func() { # 在函数内创建全局变量 declare -g global_varIm global # 局部变量函数退出后销毁 local local_varIm local } test_func echo $global_var # 输出: Im global echo $local_var # 输出: (空)5. 注意事项5.1 重要限制不可逆的属性数组属性-a 或 -A一旦设置无法用 a 或 A 取消只读属性-r一旦设置无法删除变量将永久存在作用域注意在函数内部使用 declare不带 -g创建的变量默认是局部变量在函数外部使用 declare 创建的是全局变量属性冲突某些属性不能同时设置如 -l小写和 -u大写数组和普通变量属性互斥5.2 最佳实践建议明确作用域bash运行# 函数内使用 local function my_function() { local var1local variable declare -i var242 # 也是局部变量 } # 函数外使用 declare declare -r CONSTANTvalue declare -a my_array(item1 item2)优先使用专用命令导出变量优先使用 export只读变量优先使用 readonly局部变量优先使用 local这样代码意图更清晰数组初始化bash运行# 推荐先声明后赋值 declare -a array array(value1 value2) # 或者一次性完成 declare -a array(value1 value2)

相关新闻

2026/8/13 0:42:28

网站建设挣钱么:揭秘个人与工作室如何在红海中杀出一条血路并实现月入过万的真实路径

在这个数字化狂飙突进的时代,很多人都在问同一个问题:网站建设挣钱么?听起来似乎是个老生常谈的话题,毕竟互联网普及这么多年,建站的需求早已不像十年前那样稀缺。当你刷着短视频,看着那些光鲜亮丽的“自由职业者”晒出收款截图时,心里难免会有一丝波动,既想尝试又怕踩…

2026/8/13 1:32:33

设计模式 22 · 三个冷门模式:中介者、访问者、解释器

行为型的最后三个模式——中介者(Mediator)、访问者(Visitor)、解释器(Interpreter)——我们放在一篇里集中讲。为什么合并?因为它们是二十三式里最冷门、适用面最窄的三个:中介者容易被滥用成"上帝类",访问者结构复杂且限制苛刻,解释器则是公认几乎用不到的一个。把…

2026/8/13 1:32:33

先进过程控制(APC)在半导体良率提升中的核心作用与实践指南

1. 项目概述:当良率遇到瓶颈,我们该看向哪里?在晶圆制造的漫长链条里,良率(Yield)是最终决定一切商业成败的“圣杯”。产线上的工程师们每天都在和光刻对准、薄膜厚度、刻蚀均匀性这些具体的工艺参数搏斗&a…

2026/8/13 1:32:33

3分钟上手:B站视频下载神器BiliDownloader全面指南

3分钟上手:B站视频下载神器BiliDownloader全面指南 【免费下载链接】BiliDownloader BiliDownloader是一款界面精简,操作简单且高速下载的b站下载器 项目地址: https://gitcode.com/gh_mirrors/bi/BiliDownloader 还在为无法保存喜欢的B站视频而烦…

2026/8/13 1:32:33

基于SpringBoot的智能物业管理系统设计与实现

1. 项目概述小区物业管理系统是现代社区管理的重要工具,它通过信息化手段整合物业资源、提升服务效率。基于Java和SpringBoot的智能化物业管理系统,能够实现业主信息管理、物业费收缴、报修处理、设备维护等核心功能,同时支持移动端访问&…

2026/8/13 1:27:32

GUI自动化执行层设计:从意图到原子操作的技术实现

1. 项目概述:从“看懂”到“做到”的跨越最近和几个做AI应用开发的朋友聊天,大家普遍有个感觉:现在的多模态大模型(LLM)在“看懂”图形用户界面(GUI)这件事上,进步神速。无论是截图识…

2026/8/12 10:37:12

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/12 5:35:25

当 LLM 遇见大文档:主流开源项目如何处理上下文超限

从 Agentic Loop 到 Repo Map,七种策略与六类陷阱引言:128K vs 10MB 的硬冲突 2026 年的 LLM 上下文窗口已达到 128K ~ 1M token(≈ 0.5MB ~ 4MB 文本),但 LLM 想要处理的真实数据规模远远超过这个量级:真实…

2026/8/13 0:02:21

Prefix Cache

Prefix Cache(前缀缓存) 是大模型推理引擎(如 vLLM、SGLang、TensorRT-LLM)中用于跨请求复用已计算 KV Cache 的核心内存与计算优化技术。 它的核心目的在于:彻底消除重复 Prompt 的 Prefill 阶段计算,将首…

2026/8/13 0:02:21

VSCode插件精选:从AI补全到代码规范,打造高效开发环境

1. 项目概述:为什么说插件是VSCode的灵魂?如果你和我一样,每天有超过8小时的时间是在VSCode里度过的,那你肯定明白,一个顺手的开发环境有多重要。VSCode本身已经足够优秀了,但真正让它从“好用的编辑器”蜕…

2026/8/13 0:02:21

如何快速完成文件批量重命名:FreeReNamer终极指南

如何快速完成文件批量重命名:FreeReNamer终极指南 【免费下载链接】FreeReNamer 功能强大又易用的文件批量重命名软件 项目地址: https://gitcode.com/gh_mirrors/fr/FreeReNamer 你是否曾经面对成百上千个杂乱无章的文件感到头疼?传统的手动重命…

2026/8/10 11:20:30

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/11 17:06:59

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/11 3:05:11

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…