บทความก่อนหน้าต่อไปนี้ของซีรีส์ 'Shell Scripting' ได้รับการชมเชยสูง และนั่นคือเหตุผลที่ผมเขียนบทความนี้เพื่อขยายกระบวนการเรียนรู้ที่ไม่มีที่สิ้นสุด
Bash Keywords
Keyword คือ คำหรือสัญลักษณ์ที่มีความหมายพิเศษต่อภาษาคอมพิวเตอร์ สัญลักษณ์และคำต่อไปนี้มีความหมายพิเศษต่อ Bash เมื่อไม่ได้ถูก quoted และเป็นคำแรกของคำสั่ง
! esac select } case fi then [[ do for until ]] done function while elif if time else in {
แตกต่างจากภาษาคอมพิวเตอร์ส่วนใหญ่ Bash อนุญาตให้ใช้ keywords เป็น variable names แม้จะทำให้สคริปต์อ่านยากขึ้น เพื่อให้สคริปต์เข้าใจง่าย keywords ไม่ควรใช้เป็นชื่อตัวแปร
คำสั่งถูกนำไปปฏิบัติในเชลล์เป็น $(command) คุณอาจต้องรวม full path ของคำสั่ง เช่น $(/bin/date) เพื่อการรันที่ถูกต้อง
คุณอาจรู้พาธของโปรแกรมเฉพาะด้วยคำสั่ง 'whereis' เช่น whereis date
[admin@wsxdn.com /]# whereis date date: /bin/date /usr/share/man/man1/date.1.gz
พอสำหรับทฤษฎีตอนนี้ เราจะไม่พูดมากเกินไป มาเริ่มที่สคริปต์กันดีกว่า
ย้าย Current Working Directory
ย้ายจาก current working directory ไประดับใดก็ได้ด้านบน โดยเพียงให้ค่าตัวเลขที่ท้ายสคริปต์ขณะรัน
#! /bin/bash
LEVEL=$1
for ((i = 1; i <= LEVEL; i++))
do
CDIR=../$CDIR
done
cd $CDIR
echo "You are in: "$PWD
exec /bin/bash
บันทึกโค้ดข้างต้นเป็น "up.sh" บนเดสก์ท็อป ทำให้รันได้ (chmod 755 up.sh) รัน:
./up.sh 2 (จะย้าย current working directory ขึ้น 2 ระดับ)
./up.sh 4 (จะย้าย current working directory ขึ้น 4 ระดับ)
การใช้งานและพื้นที่ประยุกต์
ในสคริปต์ขนาดใหญ่ที่มีโฟลเดอร์ซ้อนโฟลเดอร์... ที่มี libraries, binaries, icons, executables ฯลฯ อยู่ที่ต่างกัน คุณในฐานะนักพัฒนาสามารถนำสคริปต์นี้ไปใช้เพื่อย้ายไปตำแหน่งที่ต้องการได้อย่างอัตโนมัติ
หมายเหตุ: for เป็นลูปในสคริปต์ข้างต้น และจะทำงานต่อไปจนกว่าค่าจะเป็นจริงสำหรับลูป
ตัวอย่างผลลัพธ์
[admin@wsxdn.com /]# chmod 755 up [admin@wsxdn.com /]# ./up.sh 2 You are in: / [admin@wsxdn.com /]# ./up.sh 4 You are in: / [admin@wsxdn.com /]#
ดาวน์โหลด up.sh
สร้าง Random File หรือ Folder
สร้างไฟล์สุ่ม (โฟลเดอร์) โดยไม่มีโอกาสซ้ำ
#! /bin/bash echo "Hello $USER"; echo "$(uptime)" >> "$(date)".txt echo "Your File is being saved to $(pwd)"
นี่คือสคริปต์ง่าย แตการทำงานของมันไม่ได้ง่ายขนาดนั้น
- 'echo' : พิมพ์ทุกอย่างที่เขียนในเครื่องหมายคำพูด
- '$' : เป็นตัวแปรเชลล์
- '>>' : เอาต์พุตถูกเปลี่ยนทิศทางไปยังเอาต์พุตของคำสั่ง date ตามด้วย txt extension
เรารู้ว่าเอาต์พุตของคำสั่ง date คือ date และ time ใน hour, minute, second พร้อม year ดังนั้นเราจึงได้ชื่อไฟล์ที่จัดระเบียบโดยไม่มีโอกาสซ้ำ สามารถใช้ได้มากเมื่อผู้ใช้ต้องการไฟล์ที่สร้างพร้อม time stamp เพื่ออ้างอิงในอนาคต
ตัวอย่างผลลัพธ์
[admin@wsxdn.com /]# ./randomfile.sh Hello server Your File is being saved to /home/server/Desktop
คุณสามารถดูไฟล์ที่สร้างบนเดสก์ท็อปพร้อมวันที่วันนี้และเวลาปัจจุบัน
[admin@wsxdn.com /]# nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 13:51:52 up 3:54, 1 user, load average: 0.09, 0.12, 0.08
การนำไปปฏิบัติที่ละเอียดกว่าของสคริปต์ข้างต้น กำหนดด้านล่าง ซึ่งทำงานบนหลักการเดียวกันและมีประโยชน์มากในการรวบรวมข้อมูลเครือข่ายของ Linux เซิร์ฟเวอร์
ดาวน์โหลด randomfile.sh
สคริปต์รวบรวมข้อมูลเครือข่าย
รวบรวมข้อมูลเครือข่ายบนเซิร์ฟเวอร์ Linux สคริปต์ใหญ่เกินไปและไม่สามารถโพสต์โค้ดทั้งหมดและเอาต์พุทได้ที่นี่ ดังนั้นดีกว่าคุณดาวน์โหลดสคริปต์ผ่านลิงก์ด้านล่างและทดสอบด้วยตัวเอง
หมายเหตุ: คุณอาจต้องติดตั้งแพ็กเกจ lsb-core และแพ็กเกจที่จำเป็นอื่นๆ และ dependency Apt หรือ Yum แพ็กเกจที่จำเป็น แน่นอนคุณต้องเป็น root เพื่อรันสคริปต์ เพราะคำสั่งส่วนใหญ่ที่ใช้ที่นี่ถูกตั้งค่าให้รันเป็น root
ตัวอย่างผลลัพธ์
[admin@wsxdn.com /]# ./collectnetworkinfo.sh The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to admin@wsxdn.com_provider.com. ktop
คุณสามารถเปลี่ยนอีเมลข้างต้นในสคริปต์ของคุณเพื่อให้ส่งมาให้คุณ ไฟล์ที่สร้างอัตโนมัติสามารถดูได้
ดาวน์โหลด collectnetworkinfo.sh
สคริปต์แปลง UPPERCASE เป็น lowercase
สคริปต์ที่แปลง UPPERCASE เป็น lowercase และเปลี่ยนทิศทางเอาต์พุทไปยังไฟล์ข้อความ "small.txt" ซึ่งสามารถปรับเปลี่ยนได้ตามต้องการ
#!/bin/bash
echo -n "Enter File Name : "
read fileName
if [ ! -f $fileName ]; then
echo "Filename $fileName does not exists"
exit 1
fi
tr '[A-Z]' '[a-z]' < $fileName >> small.txt
สคริปต์ข้างต้นสามารถแปลงเคสของไฟล์ความยาวใดก็ได้ด้วยคลิกเดียวจาก uppercase เป็น lowercase และในทางกลับกันถ้าต้องการ ด้วยการปรับแต่งเล็กน้อย
ตัวอย่างผลลัพธ์
[admin@wsxdn.com /]# ./convertlowercase.sh Enter File Name : a.txt Initial File: A B C D E F G H I J K ...
New File (small.txt) output:
a b c d e f g h i j k ...
ดาวน์โหลด convertlowercase.sh
โปรแกรมเครื่องคิดเลขง่ายๆ
#! /bin/bash
clear
sum=0
i="y"
echo " Enter one no."
read n1
echo "Enter second no."
read n2
while [ $i = "y" ]
do
echo "1.Addition"
echo "2.Subtraction"
echo "3.Multiplication"
echo "4.Division"
echo "Enter your choice"
read ch
case $ch in
1)sum=`expr $n1 + $n2`; echo "Sum ="$sum;;
2)sum=`expr $n1 - $n2`; echo "Sub = "$sum;;
3)sum=`expr $n1 \* $n2`; echo "Mul = "$sum;;
4)sum=`expr $n1 / $n2`; echo "Div = "$sum;;
*)echo "Invalid choice";;
esac
echo "Do u want to continue (y/n)) ?"
read i
if [ $i != "y" ]
then
exit
fi
done
ตัวอย่างผลลัพธ์
[admin@wsxdn.com /]# ./simplecalc.sh Enter one no. 12 Enter second no. 14 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 1 Sum =26 Do u want to continue (y/n)) ? y 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 3 mul = 14812 Do u want to continue (y/n)) ? n
ดาวน์โหลด simplecalc.sh
ดูแล้วมั้ยว่าการสร้างโปรแกรมทรงพลังอย่างการคำนวณ ง่ายเพียงไหน นี่ไม่ใช่จุดจบ เราจะมาอีกอย่างน้อยหนึ่งบทความของซีรีส์นี้ ครอบคลุมมุมมองกว้างขึ้นจากมุมมองการบริหาร
ขอจบเท่านี้สำหรับตอนนี้ ในฐานะผู้อ่านและนักวิจารณ์ที่ดีที่สุด อย่าลืมบอกเราว่าคุณเพลินเพลินกับอะไรและเพลินเพลินมากน้อยเพียงไหนในบทความนี้ และอยากเห็นอะไรในบทความหน้า คำถามใดๆ ยินดีต้อนรับในความคิดเห็น จนกว่าจะพบกันใหม่ ขอให้ สุขภาพแข็งแรง, ปลอดภัย และ tuned Like และ Share เรา และช่วยเราเผยแพร่