将变量值增加1(shell编程)

将变量值增加1(shell编程),shell,debugging,variables,ubuntu,command-line,Shell,Debugging,Variables,Ubuntu,Command Line,我是一名shell编程的初学者,这听起来像是一个非常愚蠢的问题,但我似乎无法将变量值增加1。我已经看过了,但它只显示了如何将两个变量相加 我尝试过以下方法,但不起作用: i=0 $i=$i+1 # doesn't work: command not found echo "$i" $i='expr $i+1' # doesn't work: command not found echo "$i" $i++ # doesn't work*, com

我是一名shell编程的初学者,这听起来像是一个非常愚蠢的问题,但我似乎无法将变量值增加1。我已经看过了,但它只显示了如何将两个变量相加

我尝试过以下方法,但不起作用:

i=0

$i=$i+1 # doesn't work: command not found

echo "$i"

$i='expr $i+1' # doesn't work: command not found

echo "$i"

$i++ # doesn't work*, command not found

echo "$i"
如何将变量的值增加1??

您可以使用类似的方法:

i
作为整数变量,并使用
+=
运算符递增其值

declare -i i=0
i+=1
或者使用


以下是我知道的方法:

ichramm@NOTPARALLEL ~$ i=10; echo $i;
10
ichramm@NOTPARALLEL ~$ ((i+=1)); echo $i;
11
ichramm@NOTPARALLEL ~$ ((i=i+1)); echo $i;
12
ichramm@NOTPARALLEL ~$ i=`expr $i + 1`; echo $i;
13
请注意上一个示例中的空格,还请注意,这是唯一一个使用expr使用方式的空格:

i=0
i=`expr $i + 1`
使用i的方法++

((i++)); echo $i;

在gnubash中测试

您可以使用
bc
,因为它也可以进行浮点运算

var=$(echo "1+2"|bc)

在bash中增加变量的方法不止一种,但您尝试的方法并不正确

例如,您可以使用算术展开:

i=$((i+1))
或仅:

((i=i+1))
let "i+=1"
或:

甚至:

((i++))
let "i++"
或者您可以使用let:

let "i=i+1"
或仅:

((i=i+1))
let "i+=1"
甚至:

((i++))
let "i++"

另请参见:.

变量赋值在表达式的LHS上没有前导的
$
字符。对于expr one,它不起作用,因为它们必须是反勾(`)而不是单引号(')(
仅显示如何将两个变量相加
-好吧,它们显示了一个文本总和的赋值:
val=`expr 2+2`
)使用
/bin/bash-e
((i++)
停止执行(退出代码1)。使用
/bin/sh-e
((i=i+1))
无效,
((i++=1))/code>)和
((i++)
是不允许的。并且
let
是。是的,
((i++)
返回1,因此返回代码是1。或者可能是因为
i
如果未初始化(并在单个命令中运行)就不存在?