Bash Scripting เบื้องต้น
Alex Scriven
Data Scientist
คำสั่ง CASE เหมาะกว่า IF เมื่อมีเงื่อนไขหลายข้อหรือซับซ้อน
สมมติต้องการตรวจสอบเงื่อนไขต่อไปนี้:
sydney ให้ย้ายไปที่ไดเรกทอรี /sydneymelbourne หรือ brisbane ให้ลบไฟล์นั้นcanberra ให้เปลี่ยนชื่อเป็น IMPORTANT_filename โดยที่ filename คือชื่อเดิมสามารถเขียนหลายคำสั่ง IF ได้ดังนี้:
grep กับอาร์กิวเมนต์ ARGV แรกในเงื่อนไขif grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
PATTERN ได้ เช่น Air* สำหรับ 'ขึ้นต้นด้วย Air' หรือ *hat* สำหรับ 'มีคำว่า hat'รูปแบบพื้นฐานของคำสั่ง CASE:
case 'STRINGVAR' inPATTERN1) COMMAND1;; PATTERN2) COMMAND2;;
*) DEFAULT COMMAND;;
esac คำสั่งปิดท้ายคือ 'esac'
รูปแบบพื้นฐานของคำสั่ง CASE:
case 'STRING' in PATTERN1) COMMAND1;; PATTERN2) COMMAND2;;*) DEFAULT COMMAND;;esac
คำสั่ง IF เดิม:
if grep -q 'sydney' $1; then
mv $1 sydney/
fi
if grep -q 'melbourne|brisbane' $1; then
rm $1
fi
if grep -q 'canberra' $1; then
mv $1 "IMPORTANT_$1"
fi
คำสั่ง CASE ใหม่:
case $(cat $1) in*sydney*) mv $1 sydney/ ;; *melbourne*|*brisbane*) rm $1 ;; *canberra*) mv $1 "IMPORTANT_$1" ;;*) echo "No cities found" ;; esac
Bash Scripting เบื้องต้น