假设我有以下内容:
Vegetable=Potato ( Kind of vegetable that i have )
Potato=3 ( quantity available )
如果我想知道我有多少蔬菜(来自我只能访问变量Vegetable
的脚本),我会做以下事情:
Quantity=${!Vegetable}
但是,假设我选了一个Potato
然后我想更新数量,我应该能够做到以下几点:
${Vegetable}=$(expr ${!Vegetable} - 1)
然而,这不起作用。有人可以解释一下原因吗。
答案 0 :(得分:2)
eval ${Vegetable}=$(expr ${!Vegetable} - 1)
答案 1 :(得分:2)
尝试:
declare $Vegetable=$((${!Vegetable} - 1))
顺便说一句,您不需要使用expr
。如您所见,Bash可以处理整数运算。
有关Bash中间接的更多信息,请参阅this page。
答案 2 :(得分:0)
使用bash 4.0,您可以使用关联数组
declare -A VEGETABLE
VEGETABLE["Potato"]=3
VEGETABLE["Potato"]=$((VEGETABLE["Potato"]-1))
echo ${VEGETABLE["Potato"]}