我在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
我无法设置这个小脚本...您能帮我解决吗?