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]}