用双括号在bash中增加变量

时间:2013-11-23 16:09:33

标签: bash increment

假设我在bash中增加一个变量。例如,

> i=0; for f in `ls *.JPG`; do echo $f $i; ((i++)); done
a0.jpg 0
a1.jpg 1
...

现在我想知道为什么我需要这些双括号来增加i

2 个答案:

答案 0 :(得分:4)

i++是一个非常有效的文件名,如果我有权访问你的系统,我可以将它变成一个你不想要的命令。

尝试使用以下内容创建文件/bin/i++

#!/bin/sh
echo 'Gotcha'

然后chmod +x /bin/i++

答案 1 :(得分:4)

The double parentheses construct是一个支持算术运算的shell功能。 相同的构造也可用于Loops和特殊numerical constants

此外,从第一个链接复制:

# -----------------
# Easter Egg alert!
# -----------------
#  Chet Ramey seems to have snuck a bunch of undocumented C-style
#+ constructs into Bash (actually adapted from ksh, pretty much).
#  In the Bash docs, Ramey calls (( ... )) shell arithmetic,
#+ but it goes far beyond that.
#  Sorry, Chet, the secret is out.