Bash Scripting เบื้องต้น
Alex Scriven
Data Scientist
คำสั่ง IF พื้นฐานใน Bash มีโครงสร้างดังนี้:
if [ CONDITION ]; then# SOME CODEelse # SOME OTHER CODEfi
เคล็ดลับ 2 ข้อ:
];ตัวอย่างการเปรียบเทียบสตริงในคำสั่ง IF:
x="Queen"if [ $x == "King" ]; thenecho "$x is a King!"else echo "$x is not a King!" fi
Queen is not a King!
ใช้ != สำหรับ 'ไม่เท่ากับ' ได้เช่นกัน
คำสั่ง IF แบบคณิตศาสตร์สามารถใช้โครงสร้างวงเล็บคู่ได้:
x=10if (($x > 5)); then echo "$x is more than 5!" fi
10 is more than 5!
คำสั่ง IF แบบคณิตศาสตร์ยังใช้วงเล็บเหลี่ยมร่วมกับ flag แทน (>, <, =, != ฯลฯ) ได้ด้วย:
-eq สำหรับ 'เท่ากับ'-ne สำหรับ 'ไม่เท่ากับ'-lt สำหรับ 'น้อยกว่า'-le สำหรับ 'น้อยกว่าหรือเท่ากับ'-gt สำหรับ 'มากกว่า'-ge สำหรับ 'มากกว่าหรือเท่ากับ'ตัวอย่างก่อนหน้าเขียนใหม่ด้วยสัญกรณ์วงเล็บเหลี่ยม:
x=10
if [ $x -gt 5 ]; then
echo "$x is more than 5!"
fi
10 is more than 5!
Bash ยังมี flag เกี่ยวกับไฟล์หลายรูปแบบ เช่น:
-e ถ้าไฟล์มีอยู่-s ถ้าไฟล์มีอยู่และมีขนาดมากกว่าศูนย์-r ถ้าไฟล์มีอยู่และอ่านได้-w ถ้าไฟล์มีอยู่และเขียนได้และอื่น ๆ อีกมาก:
สำหรับการรวมเงื่อนไข (AND) หรือใช้คำสั่ง OR ใน Bash ให้ใช้สัญลักษณ์ต่อไปนี้:
&& สำหรับ AND|| สำหรับ ORใน Bash สามารถเชื่อมเงื่อนไขได้ดังนี้:
x=10
if [ $x -gt 5 ] && [ $x -lt 11 ]; then
echo "$x is more than 5 and less than 11!"
fi
หรือใช้สัญกรณ์วงเล็บเหลี่ยมคู่:
x=10
if [[ $x -gt 5 && $x -lt 11 ]]; then
echo "$x is more than 5 and less than 11!"
fi
ใช้คำสั่ง command-line ในเงื่อนไขโดยตรงได้เช่นกัน โดยไม่ต้องใช้วงเล็บเหลี่ยม
ตัวอย่างเช่น ถ้าไฟล์ words.txt มีข้อความ 'Hello World!' อยู่ภายใน:
if grep -q Hello words.txt; then
echo "Hello is inside!"
fi
Hello is inside!
ใช้ shell ภายใน shell สำหรับเงื่อนไขได้ด้วย
ลองเขียนตัวอย่างก่อนหน้าใหม่ ซึ่งให้ผลลัพธ์เหมือนเดิม
if $(grep -q Hello words.txt); then
echo "Hello is inside!"
fi
Hello is inside!
Bash Scripting เบื้องต้น