declare 是 Bash 中用于声明变量、设置变量属性的内置命令。以下是其主要用法总结:
1. 基本变量声明
declare VAR=value # 声明并赋值
declare VAR # 仅声明(值为空)
2. 设置变量属性
整数类型
declare -i NUM=10 # 只能存储整数
NUM="hello" # 会转换为 0
NUM=5+3 # 会计算为 8
只读变量(常量)
declare -r PI=3.14
PI=3.15 # 报错:只读变量
数组变量
declare -a array=("a" "b" "c")
echo ${array[1]} # 输出: b
declare -a array2
array2[0]="first"
关联数组(Bash 4+)
declare -A dict
dict["name"]="John"
dict["age"]=25
declare -A colors=([red]="#ff0000" [green]="#00ff00")
导出为环境变量
declare -x PATH="$PATH:/new/path"
# 等同于 export PATH="$PATH:/new/path"
3. 设置变量作用域
func() {
declare local_var="只在函数内可见"
global_var="全局可见"
}
4. 显示变量信息
显示所有变量
declare -p # 显示所有变量及其属性值
显示特定变量
declare -p PATH # 显示PATH变量的声明方式
# 输出: declare -x PATH="/usr/bin:/bin"
5. 组合使用多个属性
declare -ir MAX=100 # 整数+只读
declare -ax ENV_ARRAY # 数组+导出
declare -Aix dict # 关联数组+整数+导出
6. 大小写转换(Bash 4+)
declare -u upper="hello" # 自动转换为大写: HELLO
declare -l lower="HELLO" # 自动转换为小写: hello
7. 命名引用(Bash 4.3+)
declare -n ref=another_var
another_var="value"
echo $ref # 输出: value
8. 常用选项总结
| 选项 | 含义 |
|---|---|
-a |
索引数组 |
-A |
关联数组 |
-i |
整数变量 |
-r |
只读变量 |
-x |
导出为环境变量 |
-l |
赋值时转换为小写 |
-u |
赋值时转换为大写 |
-p |
显示变量定义 |
-n |
创建命名引用 |
9. 实际示例
#!/bin/bash
# 声明整数数组
declare -ia numbers=(1 2 3)
# 声明关联数组配置
declare -A config
config["host"]="localhost"
config["port"]="8080"
# 声明只读常量
declare -r APP_NAME="MyApp"
# 在函数中使用局部变量
process_data() {
declare -i local count=0
declare -a local items=()
# ... 函数逻辑
}
# 显示特定变量定义
declare -p config numbers
10. 与普通赋值的区别
var="value" # 普通赋值
declare var="value" # 显式声明,可附加属性
# 主要区别:declare可以在函数内创建局部变量
注意事项
declare在函数内使用默认创建局部变量- 属性设置是永久的,除非重新声明
- 使用
+可以移除属性:declare +i var(除只读属性外) - 某些属性需要特定 Bash 版本支持
declare 提供了比简单赋值更强大的变量控制能力,特别适用于需要严格类型或特殊行为的场景。
