shell脚本中的变量

时间:2011-03-01 17:36:25

标签: bash

#!/bin/bash
i=1
until [ $i -gt 6 ]
do
    echo "Welcome $i times."
    i=$(( i+1 ))
done

为什么我们在i = $((i + 1))中使用double(),和 为什么我们将程序改为

i=$( i+1 )

i++

$i=$i+1

,这不正确?

2 个答案:

答案 0 :(得分:3)

$( foo )尝试在子shell中执行foo作为命令,并将结果作为字符串返回。由于i+1不是有效的shell命令,因此不起作用。

$(( foo ))foo计算为算术表达式。

这只是两种相似(但不同)的语法,可以做不同的事情。

答案 1 :(得分:1)

http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/dblparens.html

  

与let命令类似,   ((...))构造允许算术   扩展和评估。在其中   最简单的形式,a = $((5 + 3))会   将“a”设置为“5 + 3”或8.但是,   这个双括号构造是   也是一种允许C型的机制   在Bash中操纵变量。