尝试在bash中使用旋转数组翻译此Java代码吗?

时间:2019-05-20 18:51:18

标签: java arrays linux bash shell

我在Java中有此代码,可以旋转数组中的值:

public class ChnagerTab {

    public static void main(String[] args) {
        int tab[] = {8, 4, 12, 2, 9};
        // we put the 9 in the variable
        int tmp= tab[tab.length - 1];

        for (int i = tab.length - 1; i > 0; i--) {
            tab[i] = tab[i - 1];
        }

        tab[0] = tmp;

        for (int i = 0; i < tab.length; i++) {
            System.out.print(" ");
            System.out.print(tab[i]);

        }
    }
}

我尝试用bash翻译此Java脚本。所以这是我的版本:

#!/bin/bash

read -rp " How many boxes ? " boxes
read -rp " Places to shift ? " n

array=( $(seq 1 "$boxes")) 
echo " Original Array : ${array[*]} "

tmp=${array[-$n]}
echo $tmp

for ((i=${array[-$n]};i>0;i--))
do
     echo ${array[$i]}=$[${array[$i]} - $n]
done

array[0]=$tmp 

for ((i=0; i<$boxes;i++))
do
    echo "${array[$i]}"
done

echo ${array[*]}

我不知道自己错过了什么,但是我的脚本无法正常工作。但是结果是:

How many boxes ? 10
 Places to shift ? 2
 Original Array : 1 2 3 4 5 6 7 8 9 10 
9
10=8
9=7
8=6
7=5
6=4
5=3
4=2
3=1
2=0
9
2
3
4
5
6
7
8
9
10
9 2 3 4 5 6 7 8 9 10

最后,我想这样:

Original array : 1 2 3 4 5 6 7 8 9 10
shift : 2
Array shifted : 9 10 1 2 3 4 5 6 7 8

我无法设置这个小脚本...您能帮我解决吗?

0 个答案:

没有答案