'$ {var // / +}'在shell脚本中的含义是什么?

时间:2015-12-04 07:07:47

标签: linux shell

我从未见过以下shell脚本语法:

cpu_now=($(head -n 1 /proc/stat))
cpu_sum="${cpu_now[@]:1}"
cpu_sum=$((${cpu_sum// /+}))

任何人都可以解释一下${cpu_sum// /+}的意思吗?

2 个答案:

答案 0 :(得分:5)

它与$cpu_sum相同,但所有(空格)都被+替换。 (见§3.5.3 "Shell Parameter Expansion" in the Bash Reference Manual。)

答案 1 :(得分:3)

cpu_sum=$((${cpu_sum// /+}))

实际上是两步操作:

  1. 首先,所有空格都被+
  2. 中的${cpu_sum// /+}替换
  3. 然后正在使用$((...)) 算术添加来添加$cpu_sum变量中的所有数字,以获得总和。
  4. 示例:

    # sample value of cpu_sum
    cpu_sum="3222 0 7526 168868219 1025 1 357 0 0 0"
    
    # all spaced replaced by +
    echo ${cpu_sum// /+}
    3222+0+7526+168868219+1025+1+357+0+0+0
    
    # summing up al the values and getting aggregate total
    echo $((${cpu_sum// /+}))
    168880350