Author Topic: for while loop command on bash shell programming ที่ใช้งานบ่อยๆ  (Read 11074 times)

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
ปกติแล้ว เราสามารถใช้งาน คำสั่ง 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
« Last Edit: มิถุนายน 05, 2013, 09:34:32 AM by golfreeze »

golfreeze

  • Administrator
  • Hero Member
  • *****
  • Posts: 2145
    • View Profile
    • นั่งสมาธิ สติปัฏฐานสี่ พาเที่ยววัด แนะนำวัด แจกcd ธรรมะฟรี
    • Email
Re: for loop command on bash shell programming ที่ใช้งานบ่อยๆ
« Reply #1 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