如何创建动态变量并为其赋值?

时间:2013-08-02 14:00:53

标签: linux bash shell

我正在尝试创建动态变量并为其分配100

#!/bin/bash
.
.   
active_id=$p_val 
flag_$active_id=100

但是我这样做会有错误,有什么帮助吗?

2 个答案:

答案 0 :(得分:20)

您可以像这样使用 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

答案 1 :(得分:5)

我不知道这应该有什么好处,但你可以用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

100
100
<{1>}上的