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
댓글
댓글 쓰기