如何在Bash中为数组所有索引统一增加指定数值(以+2为例)?
实现Bash数组索引加2的简便方法
有几种简单直接的方式可以达成需求:
方法一:借助awk处理原输出
在你原本的paste命令后通过awk修改索引列,直接给原索引加2:
arr=(a b c d e f) paste <(printf "%s\n" "${!arr[@]}") <(printf "%s\n" "${arr[@]}") | awk '{print $1+2 "\t" $2}'
awk会读取每行的第一列(原索引数值),加2后和第二列的数组值用制表符拼接输出,刚好匹配你要的格式。
方法二:循环数组直接计算
遍历数组的索引,手动计算原索引+2后输出对应内容:
arr=(a b c d e f) for ((i=0; i<${#arr[@]}; i++)); do echo -e "$((i+2))\t${arr[i]}" done
${#arr[@]}获取数组的总长度,循环中i从0开始遍历每个索引,$((i+2))计算出新索引,echo -e用来解析制表符\t实现对齐。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

