如何在bash中从列表中获取每三分之一和每四分之一的元素?

时间:2015-04-21 10:29:11

标签: arrays macos bash indexing

我的脚本中有下一个列表

....
declare -a Issues=('DPTESTXXXX-15-' 'DPTESTXXXX-16-' 'DPTESTXXXX-17-' 'DPTESTXXXX-18-' 'DPTESTXXXX-19-' 'DPTESTXXXX-20-' 'DPTESTXXXX-21-' 'DPTESTXXXX-22-' 'DPTESTXXXX-23-' 'DPTESTXXXX-24-' 'DPTESTXXXX-25-' 'DPTESTXXXX-26-' 'DPTESTXXXX-27-' 'DPTESTXXXX-28-');
for i in ${Issues[@]}; do
    git checkout -b "$i"'do-this-rc1'    
    ....
done

所以在输出中我有一个新的git分支,其名称为DPTESTXXXX-'numbers'-do-this-rc1,用于列表中的所有元素。 现在我需要相同的ie -> git checkout -b "$i"'do-this-**rc1**',但仅适用于列表中的每个第三个元素。 每个第四个元素-> git checkout -b "$i"'do-this-**rc2**'。 在bash中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

如果我理解这一点,你想要选择每3个条目和每4个条目来运行git命令。这可能就是您所需要的,请查看:

#!/bin/bash

declare -a Issues=( 'DPTESTXXXX-15-'
                    'DPTESTXXXX-16-'
                    'DPTESTXXXX-17-'
                    'DPTESTXXXX-18-'
                    'DPTESTXXXX-19-'
                    'DPTESTXXXX-20-'
                    'DPTESTXXXX-21-'
                    'DPTESTXXXX-22-'
                    'DPTESTXXXX-23-'
                    'DPTESTXXXX-24-'
                    'DPTESTXXXX-25-'
                    'DPTESTXXXX-26-'
                    'DPTESTXXXX-27-'
                    'DPTESTXXXX-28-' );

for((n=0;n<${#Issues[@]};n++)); do
        if (( $(($n % 3 )) == 0 )); then
                # Run every 3 entries
                git checkout -b "${Issues[$n]}"'do-this-rc1'
        fi
        if (( $((n % 4 )) == 0 )); then
                # Run every 4 entries
                git checkout -b "${Issues[$n]}"'do-this-rc2'
        fi
done