ค้นหาเว็บไซต์

คำถามและคำตอบสัมภาษณ์เชิงปฏิบัติเกี่ยวกับการเขียนสคริปต์ 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. 1. ให้หมายเลขอินพุต=n
  2. 2. ตั้งค่า rev=0, sd=0 (ย้อนกลับและตั้งค่าหลักเดียวเป็น 0)
  3. 3. n % 10 จะค้นหาและให้เลขหลักซ้ายสุดตัวเดียว
  4. 4. หมายเลขย้อนกลับจะถูกสร้างขึ้นเป็น rev * 10 + sd
  5. 5. ลดจำนวนอินพุต (n) ลง 1
  6. 6. ถ้า n > 0 ให้ข้ามขั้นตอนที่ 3 มิฉะนั้นไปที่ setp 7
  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 อย่าลืมให้ข้อเสนอแนะอันมีค่าแก่เราในส่วนความคิดเห็นด้านล่าง