如何更改BASH中的值?

时间:2010-03-24 22:26:29

标签: bash pointers

假设我有以下内容:

Vegetable=Potato ( Kind of vegetable that i have )
Potato=3 ( quantity available )

如果我想知道我有多少蔬菜(来自我只能访问变量Vegetable的脚本),我会做以下事情:

Quantity=${!Vegetable}  

但是,假设我选了一个Potato然后我想更新数量,我应该能够做到以下几点:

${Vegetable}=$(expr ${!Vegetable} - 1)  

然而,这不起作用。有人可以解释一下原因吗。

3 个答案:

答案 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"]}