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

如何在ksh Shell脚本的循环中显示变量名及其对应值?

在ksh脚本的for循环中获取变量名与对应值

要实现你的需求,核心是间接引用变量——通过循环变量(A/B/C/D)获取它们对应的实际值,而非保留字面量$i。下面提供两种可行的解决方案:

方法1:使用eval(兼容所有ksh版本)

eval可以解析动态生成的变量引用,正确写法是先通过eval获取变量值,再拼接字符串:

#!/bin/ksh

A=var1
B=var2
C=var3
D=var4

param=""

for i in A B C D
do
    # 通过eval获取变量i对应的实际值
    val=$(eval echo "\$$i")
    # 拼接目标参数字符串
    param="$param -p \"$i=$val\""
done

echo "$param"

执行后输出:

-p "A=var1" -p "B=var2" -p "C=var3" -p "D=var4"

方法2:使用ksh93+的间接引用语法(更安全)

如果你的环境是ksh93或更高版本,支持${!变量名}的间接引用语法,无需eval即可直接获取值:

#!/bin/ksh

A=var1
B=var2
C=var3
D=var4

param=""

for i in A B C D
do
    # 直接通过${!i}获取变量i对应的值
    val=${!i}
    param="$param -p \"$i=$val\""
done

echo "$param"

原脚本问题说明

你原来的写法中,\$i对$进行了转义,导致shell将其当作字面量$i处理,而非解析为变量i对应的实际变量值,这就是输出里都是$i而非预期值的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:20:06