Golfreeze.packetlove.com: Life style of Golfreeze Canon400D Family kammtan.com Jazz Freebsd Unix Linux System Admin guitar Music

All about unix linux freebsd and FAQ for Packetlove.com Web hosting , Mail hosting , VoIP + IP PBX server => command , shell script ,tool , crontab => Topic started by: golfreeze on มิถุนายน 05, 2013, 07:59:40 AM

Title: for while loop command on bash shell programming ที่ใช้งานบ่อยๆ
Post by: golfreeze on มิถุนายน 05, 2013, 07:59:40 AM
ปกติแล้ว เราสามารถใช้งาน คำสั่ง for ได้ สำหรับการเขียน shell programming นะครับ

เช่นต้องการให้ทำคำสั่ง 1 แล้ววนการทำงานอยู่ 5 รอบ ก็
#for i in {1..5}; do _COMMAND_; done

เช่นการทำงานตามจำนวนของ for loop เมื่อถึงค่าที่กำหนดไว้ ก็หลุดจาก for loop
#for((i=1;i<=10;i+=2)); do echo "Welcome $i times"; done

หรือจะให้ทำงาน แบบว่า check IO ของเครื่องโดย bonnie++ แล้วเก็บผลมา 5 ครั้งก็ จัดได้โดย
#for((i=1;i<=10;i+=2)); do bonnie++ -d /home/golf -s 4G -u root >> result.txt ; done

หรือการ echo ค่าออกมาตามจำนวนไฟล์
for i in *; do echo $i; done

for i in *; do ls -lah $i; done

เช่นการ backup file ใน /etc/ แล้วทำการ copy ไปที่ /backup
for i in /etc/*.conf; do cp $i /backup; done
Title: Re: for loop command on bash shell programming ที่ใช้งานบ่อยๆ
Post by: golfreeze on มิถุนายน 05, 2013, 09:34:16 AM
##While##

ให้เขียนไฟล์ทุกไฟล์ด้วย".jpg" ใน folder "img"
#for f in *; do if [ "${f#*.}" == 'jpg' ]; then echo $f; fi; done

เขียนแล้วลบ ทุกไฟล์ที่มี .jpg
#for f in *; do if [ "${f#*.}" == 'jpg' ]; then rm -r $f; fi; done

จะให้แสดงข้อมูลไฟล์ แล้วหยุด 2 วินาที จากนั้นก็ แสดงใหม่
#while true; do ls -lah ; sleep 2 ; done

สามารถใช้ : แทน true ได้ตามนี้ครับ
#while :; do foo; sleep 2; done