【发布时间】:2013-08-02 14:00:53
【问题描述】:
我正在尝试创建一个动态变量并将100 分配给它
#!/bin/bash
.
.
active_id=$p_val
flag_$active_id=100
但是我在这样做时遇到了错误,有什么帮助吗?
【问题讨论】:
-
Bash dynamic variable names 的可能重复项
我正在尝试创建一个动态变量并将100 分配给它
#!/bin/bash
.
.
active_id=$p_val
flag_$active_id=100
但是我在这样做时遇到了错误,有什么帮助吗?
【问题讨论】:
您可以像这样使用 bash 的声明指令和间接功能:
p_val="foo"
active_id=$p_val
declare "flag_$active_id"="100"
测试:
> set | grep flag
flag_foo=100
更新:
p_val="foo"
active_id="$p_val"
v="flag_$active_id"
declare "$v"="100"
> echo "$v"
flag_foo
> echo "${!v}"
100
在if condition中的用法:
if [ "${!v}" -ne 100 ]; then
echo "yes"
else
echo "no"
fi
# prints no
【讨论】:
if then ... else ... fi 块中使用的示例。
"${!v}" 被称为间接,这意味着真正的变量名包含在$v (flag_foo)中
我不知道这应该有什么好处,但是您可以使用 bash 的 eval 语句来实现这样的目标。
以下代码说明了这一点。
#!/bin/bash
p_val="TEST"
active_id=$p_val
eval "flag_$active_id=100"
echo $flag_TEST
eval "echo \$flag_$active_id"
终止echo的puts
100
100
在stdout。
【讨论】: