Uninote
Uninote
用户根目录
brdr
common
programming
docs
后端试题
问题讨论

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可以在函数内创建局部变量

注意事项

  1. declare 在函数内使用默认创建局部变量
  2. 属性设置是永久的,除非重新声明
  3. 使用 + 可以移除属性:declare +i var(除只读属性外)
  4. 某些属性需要特定 Bash 版本支持

declare 提供了比简单赋值更强大的变量控制能力,特别适用于需要严格类型或特殊行为的场景。

git-autocrlf

pattern-matching

点赞(0) 阅读(14) 举报
目录
标题