Shell script Advance for array and while loop

** Myself
อันนี้จากตัวอย่างการ backup oracle เอามาใช้ในการ อธิบาย ครับ ใน
ในส่วน ENV มีการประกาศ 3 ตัวแปร แบบ array โดยใช้ เครื่องหมาย []  อย่าง orasid[1]
ในส่วน main มี while loop ที่อ่านจนหมด เพราะ #orasid[*] หมายถึงตัวสุดท้ายของ array(ในที่นี้คือ 0ถึง2 ก็คือ3ตัว) orasid
ในส่วน main  orauser[${i}] โดย ตัว i เป็น ตัวเลขที่วน loop ใน รอบแรก i=0 หมายความว่า จะดึงค่า orauser ตัวที่ pointer 0 นั้นคือ ค่า oradev1 ออกมา และทำ while loop จนครับ สามครั้งครับ
#!/usr/bin/sh
#########  DYNAMIC ENV ##############
backup_dir=/backup/DEV
blog=/backup/DEV/backup_DEV.log
orasid[0]=dev1    #oracle sid
orasid[1]=dev2    #oracle sid
orasid[2]=dev3    #oracle sid
orauser[0]=oradev1
orauser[1]=oradev2
orauser[2]=oradev1
orahome[0]=/app/oracle/D1/product
orahome[1]=/app/oracle/D2/product
orahome[2]=/app/oracle/D3/product
############### Main ##################
export i=0
while (( i < ${#orasid[*]} ))
do
su - ${orauser[${i}]}  << BOF >> ${blog}
export ORACLE_SID=${orasid[${i}]}
echo ${orasid[${i}]} >> ${blog}
${orahome[${i}]}/bin/exp system/password file='${backup_dir}/${orasid[${i}]}.dmp' full=y
BOF
(( i = i + 1 ))
done

0 comments:

Loading