You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bash脚本中打印所有自定义本地变量?

解决方案

可以借助Bash内置命令实现需求,以下是几种实用方法:

1. 直接列出所有变量(含内置/环境变量)

使用declare命令的-p参数,它会以可复用的格式输出当前Shell环境中所有已定义的变量及对应值:

declare -p

执行后会输出类似内容:

declare -- var1="1"
declare -- var2="two"
declare -- third="cat"
declare -- abcd="dog"
declare -- something="else"
declare -- BASH_VERSION="5.1.16(1)-release"
...(其他内置/环境变量)

2. 只过滤出自定义变量

如果想排除Bash自带的内置变量、系统环境变量,只保留脚本里定义的变量,可以通过对比脚本启动前后的变量列表实现:

#!/bin/bash
# 保存脚本启动时的初始变量列表
initial_vars=$(declare -p | awk '{print $3}' | cut -d= -f1)

var1=1
var2='two'
third='cat'
abcd='dog'
something='else'

# 对比并打印新增的自定义变量
current_vars=$(declare -p | awk '{print $3}' | cut -d= -f1)
comm -13 <(echo "$initial_vars" | sort) <(echo "$current_vars" | sort) | while read var; do
    declare -p "$var"
done

这段代码只会输出你在脚本中定义的变量,不会包含系统默认的变量。

3. 简洁过滤变量(排除函数)

用set命令列出所有Shell元素(含变量和函数),再通过grep过滤出变量定义行:

set | grep -E '^[a-zA-Z_][a-zA-Z0-9_]*='

内容的提问来源于stack exchange,提问作者linux_beginner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 05:06:28