Cha*_*ffy 7
美元符号在算术上下文中是可选的。这是将值解释为数字的任何上下文。
$(( ... ))
在所有 POSIX shell 中创建算术上下文
(( ... ))
在 bash 中创建算术上下文,包括在for ((expr1; expr2; expr3))
.
let
在支持古老的 POSIX 之前的非标准语法的 shell(如 bash)中创建算术上下文。
在${array[idx]}
or中,只要数组没有被声明为关联的,就会被计算为算术array[idx]=value
。idx
In [[ value1 -le value2 ]]
, 因为-le
是算术运算符(它只进行数字比较,而不是字符串比较),两者value1
和value2
都被解析为算术。-eq
对于, -ne
,-lt
和也是-gt
如此-ge
。
在${string:start:len}
中,两者start
和len
都是算术上下文。
当declare -i variable
已将变量声明为具有数字类型并variable=value
随后运行时,value
是算术上下文。
请注意,这不适test
用于内部或[
命令的算术比较;test
(无论是否以 name 命名[
)的行为就像一个常规的 shell 命令,而不是特殊的语法(尽管有一个内置的实现作为性能优化)。
Bar*_*mar 6
在Bash 条件表达式的描述中,算术比较运算符(-lt
、-gt
等)的描述说:
当与 [[ 命令一起使用时,Arg1和Arg2被计算为算术表达式(请参阅Shell Arithmetic)。
当您点击该链接时,它会说:
在表达式中,shell 变量也可以通过名称来引用,而无需使用参数扩展语法。
以及算术扩展的描述-$((expression))
说:
@CharlesDuffy问题开始于“有人能解释一下为什么会这样吗”,然后继续说他在文档中找不到它。我在他的文档中找到了它。 (2认同)表达式中的所有标记都经过参数和变量扩展、命令替换和引号删除。...根据下面列出的规则执行评估(请参阅Shell Arithmetic)。
更多推荐
什么时候,字符,变量名,bash
发布评论