我试过这个:

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/

10-10 14:08