쉘 스크립트에서 배열 요소를 회전하고 싶습니다
Array=(11 22 33 44 55)
나는 이것을 시도했다
Array[0]=${Array[$3]}
하지만 작동하지 않습니다. 선언된 배열을 얻습니다. 왜?
마침내 나는 그것을 작동시켰다.
j=0
k=3
Array[$j]=${Array[$k]}
그런데 문제는 왜 이전처럼 인덱스를 직접 전달할 수 없느냐는 것입니다.
답변1
티팀:
Array=(11 22 33 44 55)
Array[0]=${Array[3]} # "3", not "$3"
그 결과는 다음과 같습니다.
Array=(44 22 33 44 55)
$3
세 번째 위치 인수(셸 스크립트에 대한 인수)로 확장됩니다. 이는 동일하거나 비어 있는 경우(일반적으로 대화형 셸에서) 입니다 ${array[$3]}
.${array[0]}
$array
달성하려는 경우:
Array=(55 11 22 33 44)
다음을 수행해야 합니다.
Array=("${Array[4]}" "${Array[@]:0:4}")
또는 더 일반적으로:
Array=("${Array[@]: -1}" "${Array[@]:0:${#Array[@]}-1}")
를 사용하면 zsh
다음 작업도 수행할 수 있습니다.
Array[1,0]=$Array[-1] # insert the last element at the beginning
Array[-1]=() # remove the last element
또는:
Array=("$Array[-1]" "${(@)Array[1,-2]}")
그리고 yash
:
array -i Array 0 "${Array[-1]}"
array -d Array -1
사용합니다 fish
(배열에 최소 2개의 요소가 있다고 가정).
set Array 11 22 33 44 55
set Array $Array[-1 1..-2]