Shell替换数组元素之间的间隔符号
2018-01-27 01:01
375 查看
Shell中的数组是这样表示的:
arr=(1,2,3,4,5)
它们数组元素的间隔符号为逗号,如果我相把逗号替换为加号:
echo ${arr//,/+}
输出:
1+2+3+4+5
这个表达式是我在hackerrank上看到的。原题是,输入几个数字,然后求它们的平均数,以下是代码:
arr=($(cat)) 表示运行cat命令后,用户可以输入任意多个数字,这里的输入格式是:输入一个数字后按回车,然后输入第二个数字,直到输入4个数字,并按下Ctrl+D结束输入。
这样,arr会收到4个数字。表示为:arr=(1,2,9,8),它们之间用逗号分隔。
arr=${arr[*]}会将arr转为以空格分隔的数组 arr=(1 2 9 8),全文最核心的一句 $(echo $((${arr// /+}))/$n | bc -l) 意思是将arr数组转为以加号为间隔符的数组,展开后为:
$(echo 1+2+9+8/4 | bc -l)
将这个算数表达式交给bc来计算,得出的结果为 3.750 。注意一下bc -l 参数,-l 表示使用数学库,它默认可以保持20位的精度。
最后修改:2018-01-27 10:29
arr=(1,2,3,4,5)
它们数组元素的间隔符号为逗号,如果我相把逗号替换为加号:
echo ${arr//,/+}
输出:
1+2+3+4+5
这个表达式是我在hackerrank上看到的。原题是,输入几个数字,然后求它们的平均数,以下是代码:
#!/bin/bash # 输入几个数字并计算出平均值 # 第一个数字表示需要计算多少个数字 # 计算平均数的时候从第2位开始直到结束 # 如果输入 # 4 # 1 # 2 # 9 # 8 # 则结果为 # 5.000 read n arr=($(cat)) arr=${arr[*]} printf "%.3f" $(echo $((${arr// /+}))/$n | bc -l)
arr=($(cat)) 表示运行cat命令后,用户可以输入任意多个数字,这里的输入格式是:输入一个数字后按回车,然后输入第二个数字,直到输入4个数字,并按下Ctrl+D结束输入。
这样,arr会收到4个数字。表示为:arr=(1,2,9,8),它们之间用逗号分隔。
arr=${arr[*]}会将arr转为以空格分隔的数组 arr=(1 2 9 8),全文最核心的一句 $(echo $((${arr// /+}))/$n | bc -l) 意思是将arr数组转为以加号为间隔符的数组,展开后为:
$(echo 1+2+9+8/4 | bc -l)
将这个算数表达式交给bc来计算,得出的结果为 3.750 。注意一下bc -l 参数,-l 表示使用数学库,它默认可以保持20位的精度。
最后修改:2018-01-27 10:29
相关文章推荐
- Shell多个命令间隔符号;和&和&&区别
- 【linux】shell中命令替换$(cmd)和符号`cmd`
- 练习1-21 编写程序entab,将空格串替换成最少数量的制表符和空格,但要保持单词之间的间隔不变。假设制表符终止位的位置与练习1-20的detab程序的情况相同。当使用一个制表符或者一个空格都可以到达下一个制表符终止位时,选用哪种替换字符比较好。
- shell字符串操作(长度,查找,替换,匹配)详解(shell内置一系列操作符号实现)
- shell中命令替换$(cmd)和符号`cmd`
- shell 替换文本中的某个符号为换行符
- linux中shell命令之间&&与||符号
- shell两数之间的算术运算
- Linux笔记(shell特殊符号,sort排序,wc统计,uniq去重,tee,tr,split)
- Shell 查找与替换
- shell 中的特殊符号解释
- C#对于字符串的处理类(剪裁、过滤危险字符、替换sql中有问题符号等)
- Android-计算两个日期之间间隔的天数
- Linux系统学习笔记Shell基础特殊符号、sort、wc、uniq、tee、tr、split
- shell 计算两个日期之间的天数
- shell 特殊符号
- Shell转义字符与变量替换
- linux perl shell perl vi grep awk xargs 批量替换(转载)
- UITableView 的Cell之间的间隔
- shell下su 和 su - 之间的区别