คำถามและคำตอบสัมภาษณ์เชิงปฏิบัติเกี่ยวกับการเขียนสคริปต์ Linux Shell
ด้วยการตอบรับอย่างล้นหลามที่เราได้รับจากบทความ Interview Series บทความแรกบนเว็บไซต์ Linux How-to ในรูปแบบของการถูกใจ การตอบรับในความคิดเห็นตลอดจนที่อยู่อีเมลส่วนตัวทำให้เราก้าวจากบทความหนึ่งไปยังอีกบทความหนึ่ง บทความ.
นี่คือลิงก์ไปยังบทความ Interview Series ที่เผยแพร่แล้วบน linux-console.net ซึ่งเราได้ครอบคลุมหัวข้อต่างๆ มากมาย ได้แก่ FTP, MySQL, Apache, Scripting, Linux Commands ฯลฯ
ต่อจากซีรีส์ข้างต้น เราจะมาพร้อมกับคำถามสัมภาษณ์ Linux ที่ยอดเยี่ยมอีก 5 ข้อและคำตอบ การสนับสนุนของคุณ (ผู้อ่าน linux-console.net และผู้เยี่ยมชมบ่อย) เป็นสิ่งจำเป็นเสมอเพื่อให้ประสบความสำเร็จ
1. เขียนเชลล์สคริปต์เพื่อรับวันที่ เวลา ชื่อผู้ใช้ และไดเร็กทอรีการทำงานปัจจุบัน
ตอนนี้สร้างไฟล์ชื่อ 'userstats.sh' และเพิ่มโค้ดต่อไปนี้ลงไป
#!/bin/bash
echo "Hello, $LOGNAME"
echo "Current date is `date`"
echo "User is `who i am`"
echo "Current directory `pwd`"
วางสิทธิ์ดำเนินการและเรียกใช้สคริปต์ตามที่แสดงด้านล่าง
chmod 755 userstats.sh
./userstats.sh
ผลลัพธ์ตัวอย่าง
Hello, avi
Current date is Sat Jun 7 13:05:29 IST 2014
User is avi pts/0 2014-06-07 11:59 (:0)
Current directory /home/avi/Desktop
2. เขียนเชลล์สคริปต์ที่บวกตัวเลขสองตัวหากระบุเป็นอาร์กิวเมนต์บรรทัดคำสั่ง และหากไม่ได้ป้อนตัวเลขทั้งสอง จะแสดงข้อความแสดงข้อผิดพลาดพร้อมกับคำอธิบายวิธีใช้หนึ่งบรรทัด
สร้างไฟล์ชื่อ 'two-numbers.sh' อีกครั้ง และเพิ่มเนื้อหาต่อไปนี้ลงไป
#!/bin/bash
The Shebang
if [ $# -ne 2 ]
If two Inputs are not received from Standard Input
then
then execute the below statements
echo "Usage - $0 x y"
# print on standard output, how-to use the script (Usage - ./1.sh x y )
echo " Where x and y are two nos for which I will print sum"
# print on standard output, “Where x and y are two nos for which I will print sum ”
exit 1
# Leave shell in Error Stage and before the task was successfully carried out.
fi
End of the if Statement.
echo "Sum of $1 and $2 is `expr $1 + $2`"
# If the above condition was false and user Entered two numbers as a command Line Argument,
it will show the sum of the entered numbers.
ตั้งค่าสิทธิ์ผู้ดำเนินการในไฟล์และเรียกใช้สคริปต์ดังที่แสดงด้านล่าง
chmod 755 two-numbers.sh
เงื่อนไข 1: การรันสคริปต์โดยไม่ป้อนตัวเลขสองตัวเป็นอาร์กิวเมนต์บรรทัดคำสั่ง คุณจะได้รับผลลัพธ์ต่อไปนี้
ผลลัพธ์ตัวอย่าง
./two-numbers.sh
Usage - ./two-numbers.sh x y
Where x and y are two nos for which I will print sum
เงื่อนไข 2: เมื่อป้อน Numbers เป็นอาร์กิวเมนต์บรรทัดคำสั่ง คุณจะได้ผลลัพธ์ดังที่แสดง
./two-numbers.sh 4 5
Sum of 4 and 5 is 9
ดังนั้นเชลล์สคริปต์ด้านบนจึงตรงตามเงื่อนไขที่แนะนำในคำถาม
3. คุณต้องพิมพ์หมายเลขที่กำหนดว่า 10572 ในลำดับย้อนกลับโดยใช้สคริปต์เชลล์เพื่อให้อินพุตมีให้โดยใช้อาร์กิวเมนต์บรรทัดคำสั่งเท่านั้น หากข้อมูลอินพุตไม่ได้จัดเตรียมไว้เป็นอาร์กิวเมนต์บรรทัดคำสั่ง ข้อมูลนั้นควรเกิดข้อผิดพลาดและควรแนะนำวิธีใช้สคริปต์ เขียนสคริปต์ แต่ก่อนหน้านั้นบอกฉันถึงอัลกอริทึมที่ต้องดำเนินการที่นี่
อัลกอริทึม
- 1. ให้หมายเลขอินพุต=n
- 2. ตั้งค่า rev=0, sd=0 (ย้อนกลับและตั้งค่าหลักเดียวเป็น 0)
- 3. n % 10 จะค้นหาและให้เลขหลักซ้ายสุดตัวเดียว
- 4. หมายเลขย้อนกลับจะถูกสร้างขึ้นเป็น rev * 10 + sd
- 5. ลดจำนวนอินพุต (n) ลง 1
- 6. ถ้า n > 0 ให้ข้ามขั้นตอนที่ 3 มิฉะนั้นไปที่ setp 7
- 7. พิมพ์รอบ
อีกครั้ง ให้สร้างไฟล์ชื่อ 'numbers.sh' และเพิ่มโค้ดที่กำหนดต่อไปนี้
#!/bin/bash
if [ $# -ne 1 ]
then
echo "Usage: $0 number"
echo " I will find reverse of given number"
echo " For eg. $0 0123, I will print 3210"
exit 1
fi
n=$1
rev=0
sd=0
while [ $n -gt 0 ]
do
sd=`expr $n % 10`
rev=`expr $rev \* 10 + $sd`
n=`expr $n / 10`
done
echo "Reverse number is $rev"
ให้สิทธิ์ดำเนินการกับไฟล์และรันสคริปต์ตามที่แสดงด้านล่าง
chmod 755 numbers.h
เงื่อนไข 1: เมื่อไม่ได้ระบุอินพุตเป็นอาร์กิวเมนต์บรรทัดคำสั่ง คุณจะได้รับเอาต์พุตต่อไปนี้
ผลลัพธ์ตัวอย่าง
./numbers.sh
Usage: ./numbers.sh number
I will find reverse of given number
For eg. ./2.sh 123, I will print 321
เงื่อนไข 2: เมื่ออินพุตถูกระบุเป็นอาร์กิวเมนต์บรรทัดคำสั่ง
./numbers.sh 10572
Reverse number is 27501
สคริปต์ด้านบนทำงานได้อย่างสมบูรณ์แบบและผลลัพธ์ก็เป็นสิ่งที่เราต้องการ
4. คุณควรคำนวณการคำนวณจำนวนจริงโดยตรงจากเทอร์มินัล ไม่ใช่เชลล์สคริปต์ใดๆ คุณจะทำอย่างไร (บอกว่าเลขจริงคือ 7.56 และ 2.453)?
ตัวอย่างเช่น รันคำสั่งต่อไปนี้เพื่อคำนวณตัวเลขแบบเรียลไทม์โดยใช้คำสั่ง bc ดังที่แสดง
echo 7.56 + 2.453 | bc
10.013
5. คุณควรหาค่าพายเป็นทศนิยมไม่เกิน 100 ตำแหน่ง วิธีที่ง่ายที่สุดในการหาผลลัพธ์คือวิธีใด
pi 100
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067
อย่างชัดเจน! เราต้องมีการติดตั้งแพ็คเกจ 'pi' เพียงทำ apt หรือ yum เพื่อรับแพ็คเกจที่จำเป็นสำหรับการติดตั้ง 'pi' ลงในการกระจายที่คุณใช้
นั่นคือทั้งหมดที่สำหรับตอนนี้. ฉันจะมาที่นี่อีกครั้งพร้อมบทความที่น่าสนใจอีกเร็ว ๆ นี้ จนกว่าจะคอยติดตามและเชื่อมต่อกับ linux-console.net อย่าลืมให้ข้อเสนอแนะอันมีค่าแก่เราในส่วนความคิดเห็นด้านล่าง