为什么...
sum=0; for i in 1 2 3 4; do echo "$i" | sum=$((sum+i)); done; echo $sum
...在zsh
中工作正常,但在bash
中工作不正常?也许是因为bash不支持浮点运算?我也尝试过...
sum=0; for i in 1 2 3 4; do echo "$i" | awk '{sum+=$1}'; done; echo $sum
...但是这两种方法都不起作用(这在macOS 10.14.2上)。我发现了几个相关的问题(例如this或this),但这个问题仍然存在。
答案 0 :(得分:2)
有一个错误的“ |”
sum=0; for i in 1 2 3 4; do echo "$i" ; sum=$((sum+i)); done; echo $sum
1
2
3
4
10
第二个示例不起作用,因为每次重复循环时都要调用awk,因此不会存储sum的值。