在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(-)
我想将 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(-)