altibase@MyUbuntu:~$  df -P -k /home | grep -v File

/dev/sda1         29799484 20586024   7676692      73% /

altibase@MyUbuntu:~$ df -P -k /home | grep -v File | sed  -e "s/\ \+/ /g"  

/dev/sda1 29799484 20586040 7676676 73% /





Avoiding global variables means you can use the function in a pipe. Here is an example:

#!/bin/bash

makeJunk()
{
   echo 'this is junk'
   echo '#more junk and "b@d" characters!'
   echo '!#$^%^&(*)_^&% ^$#@:"<>?/.,\\"'"'"
}

processJunk()
{
    local -a arr=()    
    # read each input and add it to arr
    while read -r line
    do 
       arr[${#arr[@]}]='"'"$line"'" is junk'; 
    done;

    # output the array as a string in the "declare" representation
    declare -p arr | sed -e 's/^declare -a [^=]*=//'
}

# processJunk returns the array in a flattened string ready for "declare"
# Note that because of the pipe processJunk cannot return anything using
# a global variable
returned_string=`makeJunk | processJunk`

# convert the returned string to an array named returned_array
# declare correctly manages spaces and bad characters
eval "declare -a returned_array=${returned_string}"

for junk in "${returned_array[@]}"
do
   echo "$junk"
done

Output is:

"this is junk" is junk
"#more junk and "b@d" characters!" is junk
"!#$^%^&(*)_^&% ^$#@:"<>?/.,\\"'" is junk




/* runLoader.sh */


wait4loader()

{

while(true)

do

     CNT=`ps -ef | grep -v grep | grep -c loader`

    if [ $CNT -ge 16 ]; then     #  이미 지정된 갯수보다 더 많은  프로세스가 동시 실행중이면

          sleep 1;                    #   대기한다.   16= CPU core 수

    else

          break;                     # 적으면 다음 프로세스 추가 실횅을 위해서 loop를 빠져 나간다.

   fi


done


}



loaderTable(0

{

     if [ $TABLE != "X" ] ; then

         loader ... -T $TABLE

     fi


}


for  TABLE in ${TABLES[@]}

do

           TABLE=${TABLE:="X"}

           wait4loader

           loaderTable


done




http://blog.redjini.com/282  참고


배열선언

array_name_1=("value 1" "value 2" "value 3")

array_name_2=(1 2 3)



배열참조


array_name=("value 1" "value 2" "value 3")

 
echo "array_name[0]     = ${array_name[0]}"  #print array_name[0]
echo "array_name[2]     = ${array_name[2]}"  #print array_name[2]
echo "array_name[*]     = ${array_name[*]}"  #print array_name all item
echo "array_name[@]     = ${array_name[@]}"  #print array_name all item
echo "array_name index  = ${!array_name[@]}" #print array_name index number
echo "array_name size   = ${#array_name[@]}" #print array_name size
echo "array_name[0] size= ${#array_name[0]}" #print array_name[0] size



출력결과

array_name[0]     = value 1

array_name[2]     = value 3
array_name[*]     = value 1 value 2 value 3
array_name[@]     = value 1 value 2 value 3
array_name index  = 0 1 2
array_name size   = 3
array_name[0] size= 7

+ Recent posts