#!/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
,这不正确?
答案 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中操纵变量。