我正在尝试创建动态变量并为其分配100
#!/bin/bash
.
.
active_id=$p_val
flag_$active_id=100
但是我这样做会有错误,有什么帮助吗?
答案 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>}上的。