尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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)
RELATED

相关推荐

llama.cpp 本地部署完全指南:从安装到 OpenAI 兼容 API 服务

llama.cpp 本地部署完全指南:从安装到 OpenAI 兼容 API 服务

发布日期:2026-08-12 | 数据来源:llama.cpp 官方 GitHub(ggml-org/llama.cpp)文档、官方 install.md / build.md / server 文档 | 话题:llama.cpp 本地大模型 GGUF llama-server llama.cpp 是由 Georgi Gerganov 开…

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

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

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

📅 2026/9/18 9:26:07
地铁采风111

地铁采风111

📅 2026/9/25 15:01:48
MORE NEWS

更多资讯

📰

安灯系统落地指南:触发机制、B/S架构与数据闭环

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

DRV8818+PIC18F86J50工业步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

PowerShell 启动不了?从报错到修复的完整排查路径

PowerShell 启动不了?从报错到修复的完整排查路径 【免费下载链接】PowerShell PowerShell for every system! 项目地址: https://gitcode.com/GitHub_Trending/po/PowerShell 敲下 pwsh,回车,终端只吐出一串红色报错,提示…

📰

基于 SX126x-Arduino 库的 ESP32 LoRaWAN 节点实战:从入网配置到源码级解析

嵌入式硬件开发 【免费下载链接】ESP32-Bit-Pirate A Hardware Hacking Tool with Web-Based CLI That Speaks Every Protocol 项目地址: https://gitcode.com/GitHub_Trending/es/ESP32-Bit-Pirate 点击查看 免费下载 本篇文章面向使用 ESP32、ESP8266 与 nRF528…

📰

esptool 配置文件(esptool.cfg)完全指南:自定义时序、超时与复位序列

开发工具嵌入式硬件开发 【免费下载链接】esptool Serial utility for flashing, provisioning, and interacting with Espressif SoCs 项目地址: https://gitcode.com/gh_mirrors/es/esptool 点击查看 免费下载 esptool 是一款通过串口与 Espressif SoC 进行烧录、…

📰

Warp 代码审查 Git 操作 AI 自动生成开关与 Enterprise 准入门控:APP-4118 技术解析

桌面应用开发者工具人工智能AI 应用AI Agent代码智能体 【免费下载链接】warp Warp is an agentic development environment, born out of the terminal. 项目地址: https://gitcode.com/GitHub_Trending/wa/warp 点击查看 免费下载 导读 本文基于 Warp 开源仓库中…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬