我试过这个:
aaa=10
echo "sdf sdfsd sd ${aaa+=1} sdf sdf "
然后回来了:
aaa=10
sdf sdfsd sd =1 sdf sdf
bash支持这样做吗?
最佳答案
对。可以使用$(( expression ))
进行算术展开:
echo "sdf sdfsd sd $((myvar+=1)) sdf sdf "
^^ ^^
输出(前面的变量赋值
myvar=0
):sdf sdfsd sd 1 sdf sdf
整个标记
$(( expression ))
在计算后扩展为表达式的结果。因此echo $((1+2))
给出3
。还有另一个表达式求值的非扩展版本,
(( expr ))
,它根据表达式的求值返回true
/false
(non--zero/zero)。从
man bash
:算术展开
算术展开允许计算算术表达式并替换结果。算术展开的格式为:
$((expression))
必须使用双括号,因为单括号用于捕获命令的输出:
a=$(echo "hahaha") # a is hahaha
a=$((1+2)) # a is 3
感谢@JohnKugelman指出语法和手册页的名称
关于linux - 我可以在bash字符串插值中计算表达式吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48487735/