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:37:27 阅读更多 →
3步彻底清理Windows系统优化工具:让你的“此电脑“恢复整洁

3步彻底清理Windows系统优化工具:让你的“此电脑“恢复整洁

3步彻底清理Windows系统优化工具:让你的"此电脑"恢复整洁 【免费下载链接】MyComputerManager 管理“此电脑”里删不掉的流氓“快捷方式”(包括侧边栏),同时可自己添加这类“快捷方式” 项目地址: https://gitcode.co…

2026/8/14 1:07:56 阅读更多 →
嵌入式面试总结(六)——现代处理器架构

嵌入式面试总结(六)——现代处理器架构

一、引言在嵌入式系统开发与面试中,处理器架构是必须掌握的核心知识。它不仅决定了系统的性能、功耗和成本,更是理解底层硬件工作原理、进行系统优化和解决复杂问题的基石。无论是面对资深工程师的深度追问,还是应对校招笔试中的基础概念题&a…

2026/8/14 1:15:59 阅读更多 →

最新新闻

Android Camera开发系列(干货满满)

Android Camera开发系列(干货满满)

“Android Camera一站式 学习平台”: https://www.camerahub.cn 无论走到哪里,都会有明天~ 整理了下发布的Camera相关的文章,每个标题就是链接,可以直接点击进入查看相关内容~ 生活不息、学习不止,相关内还会持续更新…

2026/8/14 5:26:50 阅读更多 →
java电子围栏

java电子围栏

java版的电子围栏违规判断,经过测试,准确率百分之百,经过各大AI审查已经无限趋近于完美,本工具类支持圆形,矩形,多边形,性能与准确率都有保障,实测判断多边形围栏,单线程…

2026/8/14 5:26:49 阅读更多 →
Seedance 2.0:下一代分布式任务编排与调度引擎深度解析

Seedance 2.0:下一代分布式任务编排与调度引擎深度解析

引言:为什么需要 Seedance 2.0? 在当今云原生与微服务架构盛行的时代,复杂的业务逻辑往往被拆分为无数个细粒度的任务。如何高效、可靠、可观测地编排与调度这些任务,成为开发者面临的核心挑战。传统的定时任务框架(如…

2026/8/14 5:26:49 阅读更多 →
嵌入式从0到精通——数据结构

嵌入式从0到精通——数据结构

一、基本概念数据结构数据结构:存储具有一种或多种特定关系的数据的集合(如何组织和存储数据)。程序设计 数据结构 算法数据与数据之间的关系逻辑结构 : 数据元素与元素之间的关系集合 :数据元素与元素之间关系平等线…

2026/8/14 5:26:49 阅读更多 →
如何快速切换OneNav主题:从默认到自定义的完整指南

如何快速切换OneNav主题:从默认到自定义的完整指南

如何快速切换OneNav主题:从默认到自定义的完整指南 【免费下载链接】onenav 使用PHP SQLite 3开发的书签管理系统,将浏览器书签集中式管理,做到一处部署,随处访问。 项目地址: https://gitcode.com/gh_mirrors/on/onenav …

2026/8/14 5:26:48 阅读更多 →
如何低成本快速建设一个微商的网站并实现销量爆发式增长全攻略

如何低成本快速建设一个微商的网站并实现销量爆发式增长全攻略

在这个万物互联、指尖触达一切的时代,如果你还在纠结要不要搞自己的私域流量池,要不要搞自己的独立商城,那我只能告诉你,你的竞争对手可能已经悄悄把客户圈走了。很多人一提到“建设一个微商的网站”,脑海中浮现的往往是那些花里胡哨、代码乱飞、加载慢得像蜗牛的科技产品…

2026/8/14 5:25:37 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

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

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

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →