| 选项 | 含义 | 示例 | 说明 |
|---|
-r | 只读变量 | declare -r PI=3.14 | 变量不能修改、不能删除 |
-x | 导出为环境变量 | declare -x PATH | 同export,子进程可继承 |
-i | 整型变量 | declare -i num=10 | 只能存整数,自动算术运算 |
-a | 普通数组 | declare -a arr=(1 2 3) | 索引数组,下标从0开始 |
-A | 关联数组 | declare -A map=([k]=v) | 键值对数组(类似字典) |
-f | 显示函数 | declare -f | 列出所有函数及定义 |
-F | 仅函数名 | declare -F | 只列出函数名,不显示内容 |
-l | 转为小写 | declare -l str="HELLO" | 赋值自动转小写 |
-u | 转为大写 | declare -u str="hello" | 赋值自动转大写 |
-p | 显示属性 | declare -p var | 显示变量类型和值 |
一、选项详细示例
1.1 -r 只读变量
declare -r PI=3.14159
PI=3.14 # 错误!只读变量不能修改
unset PI # 错误!不能删除
1.2 -x 导出环境变量
declare -x MY_VAR="hello"
bash -c 'echo $MY_VAR' # 子进程能看到: hello
1.3 -i 整型变量
declare -i num=10
num=num+5 # 自动计算,num=15
num="20" # 字符串自动转数字
num="abc" # 赋值失败,变成0
1.4 -a 普通数组
declare -a fruits=("apple" "banana" "orange")
fruits[3]="grape"
echo ${fruits[0]} # apple
echo ${#fruits[@]} # 4(数组长度)
1.5 -A 关联数组
declare -A person
person=([name]="Tom" [age]=25 [city]="Beijing")
echo ${person[name]} # Tom
echo ${person[age]} # 25
1.6 -f 和 -F 显示函数
#!/bin/bash
func1() { echo "hello"; }
func2() { date; }
declare -f # 显示所有函数定义
declare -F # 只显示函数名
# 输出:
# declare -f func1
# declare -f func2
1.7 -l 和 -u 大小写转换
declare -l lower="HELLO WORLD"
echo $lower # hello world
declare -u upper="hello world"
echo $upper # HELLO WORLD
二、组合使用
# 只读+整型+导出
declare -irx MAX_COUNT=100
# 只读数组
declare -ra COLORS=("red" "green" "blue")
# 只读关联数组
declare -rA CONFIG=([host]="localhost" [port]=8080)
三、查看变量属性
# 查看特定变量
declare -p PI
# 输出: declare -r PI="3.14159"
# 查看所有变量
declare -p
# 查看所有函数
declare -f
四、总结速记
| 选项 | 英文 | 中文 | 速记 |
|---|
-r | readonly | 只读 | readonly |
-x | export | 导出 | export |
-i | integer | 整型 | integer |
-a | array | 数组 | array |
-A | associative | 关联数组 | Associative |
-f | function | 函数 | function |
-F | function name | 函数名 | F (only name) |
-l | lowercase | 小写 | lower |
-u | uppercase | 大写 | upper |
-p | print | 打印 | print |
发表回复