Bash 배열 활용에 관련된 정리된 내용

입질쾌감 물때표

1. 배열다루기

array_name=("value 1" "value 2" "value 3")
 
echo "array = ${array_name[@]}"
# 출력 결과
# array = value 1 value 2 value 3
 
printf "value = %s\n" "${array_name[@]}"
# 출력 결과
# value = value 1
# value = value 2
# value = value 3
 
for value in "${array_name[@]}"; do
    echo $value
done
# 출력 결과
# value 1
# value 2
# value 3
 
for (( i = 0 ; i < ${#array_name[@]} ; i++ )) ; do
    echo "value[$i] = ${array_name[$i]}"
done
# 출력 결과
# value[0] = value 1
# value[1] = value 2
# value[2] = value 3
 
for index in ${!array_name[*]} ; do
    printf "%4d: %s\n" "$index" "${array_name[$index]}"
done
# 출력 결과
#   0: value 1
#   1: value 2
#   2: value 3

user1@user1-laptop:~/Desktop$ echo ${text[@]}
a b c d
user1@user1-laptop:~/Desktop$ echo ${!text[*]}
0 1 2 3
user1@user1-laptop:~/Desktop$ echo ${#text[*]}
4

2. 두번째 활용 방법, Bash에서 2차 배열 사용하는 방법!

#!/bin/bash
declare -A matrix
num_rows=4
num_columns=5

for ((i=1;i<=num_rows;i++)) do
    for ((j=1;j<=num_columns;j++)) do
        matrix[$i,$j]=$RANDOM
    done
done

f1="%$((${#num_rows}+1))s"
f2=" %9s"

printf "$f1" ''
for ((i=1;i<=num_rows;i++)) do
    printf "$f2" $i
done
echo

for ((j=1;j<=num_columns;j++)) do
    printf "$f1" $j
    for ((i=1;i<=num_rows;i++)) do
        printf "$f2" ${matrix[$i,$j]}
    done
    echo
done

어찌되었든 for문을 활용할때에는 for ((i=1;i<=num_rows;i++)) do 이런식으로 사용하는게 가장 편리한 방법인것 같다.

3. 마지막 배열값 가져오기

THE_LONG_PATH=/home/silviogutierrez/www/example.com

DIRS=(${THE_LONG_PATH//\// })

LENGTH=${#DIRS[@]} # Get the length.                                          
LAST_POSITION=$((LENGTH - 1)) # Subtract 1 from the length.                   
LAST_PART=${DIRS[${LAST_POSITION}]} # Get the last position.

LAST_PART=${DIRS[${#DIRS[@]} - 1]}

THE_LONG_PATH=/home/silviogutierrez/www/example.com                           
DIRS=(${THE_LONG_PATH//\// })                                                 
LAST_PART=${DIRS[${#DIRS[@]} - 1]}

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다