declare 命令选项详解

选项含义示例说明
-r只读变量declare -r PI=3.14变量不能修改、不能删除
-x导出为环境变量declare -x PATHexport,子进程可继承
-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

四、总结速记

选项英文中文速记
-rreadonly只读readonly
-xexport导出export
-iinteger整型integer
-aarray数组array
-Aassociative关联数组Associative
-ffunction函数function
-Ffunction name函数名F (only name)
-llowercase小写lower
-uuppercase大写upper
-pprint打印print

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注