在Shell中,如何对作为字符串一部分的数字进行算术运算?

in Shell, How to do arithmetic operation on a number which is part of a string?

我想将 100 添加到插入中,在下面进行了尝试,但它却添加了 1 美元?

#!/bin/bash
change_summary="17 files changed, 441 insertions(+), 49 deletions(-)"
lines_added="100"
echo $change_summary
echo $change_summary | awk '{ print  " "  " "  " " +$lines_added " "  " "  " " }'

它打印

17 files changed, 441 insertions(+), 49 deletions(-)
17 files changed, 458 insertions(+), 49 deletions(-)

我希望它打印 541 个插入内容。

有没有更好的方法来做到这一点?

你应该 "unquote" $lines_added:

~$ echo $change_summary | awk '{ print  " "  " "  " " ()+'$lines_added' " "  " "  " " }'
`17 files changed, 541 insertions(+), 49 deletions(-)

因为它是一个 bash 变量,而不是 awk 变量。

使用 awk 变量(使用 GNU awk 测试):

 awk -v l=$lines_added '{ print  " "  " "  " " +l " "  " "  " " }'

或更简洁:

 $ echo $change_summary | awk -v l=$lines_added '{  += l; print}'
 17 files changed, 541 insertions(+), 49 deletions(-)