bash programming - 배열에 대해서
bash는 1차원 배열만 지원한다. 인덱스는 0부터 시작하며 정수값만 사용할 수 있다. 인덱스가 반드시 0부터 시작해야 하는건 아니며 연관 배열처럼 사용할 수도 있다.
declare -a name 명령을 사용해서 배열을 선언할 수도 있으며 declare -a 명령을 사용하면 현재 선언되어 있는 모든 배열변수를 볼 수 있다.
[*]과 [@]는 따옴표(") 안에서 서로 다르게 동작한다.
http://www.gnu.org/software/bash/manual/bashref.html#Arrays
declare -a name 명령을 사용해서 배열을 선언할 수도 있으며 declare -a 명령을 사용하면 현재 선언되어 있는 모든 배열변수를 볼 수 있다.
# 네 개의 요소를 가지는 배열 선언
names=(e0 e1 e2 e3)
# 첫번째 엘리먼트를 출력
echo ${names[0]}
# 인덱스값을 넣지 않으면 0번째 엘리먼트를 출력
echo ${names}
# 배열 요소의 개수
echo ${#names[*]}
# n번째 엘리먼트의 글자수를 구하려면
echo ${#names[n]}
# 0번째 엘리먼트의 글자수를 구하려면
echo ${#names}
# 인덱스가 2 이상인 엘리먼트들을 출력
echo ${names[*]:2}
# 인덱스가 1 이상인 엘리먼트 두개만 출력
echo ${names[*]:1:2}
# 엘리먼트 추가
names=(${names(*)} e4 e5 e6)
# 엘리먼트 삭제
unset names[2]
[*]과 [@]는 따옴표(") 안에서 서로 다르게 동작한다.
books=(java cpp js sql css)
mybooks=("${books[*]}")
yourbooks=("${books[@]}")
# declare -a 실행 결과
declare -a books='([0]="java" [1]="cpp" [2]="js" [3]="sql" [4]="css")'
declare -a mybooks='([0]="java cpp js sql css")'
declare -a yourbooks='([0]="java" [1]="cpp" [2]="js" [3]="sql" [4]="css")'
http://www.gnu.org/software/bash/manual/bashref.html#Arrays
댓글
댓글 쓰기