Πρακτικές ερωτήσεις και απαντήσεις συνέντευξης στο Linux Shell Scripting


Με τη συντριπτική ανταπόκριση που λαμβάνουμε στα άρθρα της σειράς συνεντεύξεων, το πρώτο του είδους του σε οποιονδήποτε ιστότοπο Linux How-to με τη μορφή Likes, σχόλια σε σχόλια καθώς και στην προσωπική διεύθυνση ηλεκτρονικού ταχυδρομείου μας κάνει να πηγαίνουμε από το ένα άρθρο στο άλλο άρθρο.

Ακολουθεί ο σύνδεσμος για τα άρθρα της σειράς συνεντεύξεων που έχουν ήδη δημοσιευτεί στο linux-console.net, όπου έχουμε καλύψει πολλά θέματα όπως FTP, MySQL, Apache, Scripting, Linux Commands κ.λπ.

Συνεχίζοντας την παραπάνω σειρά εδώ ερχόμαστε με άλλες 5 υπέροχες ερωτήσεις συνέντευξης Linux και την απάντησή τους. Η υποστήριξή σας (The 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. Γράψτε μια δέσμη ενεργειών Shell που προσθέτει δύο αριθμούς, εάν παρέχεται ως όρισμα γραμμής εντολών και εάν οι δύο αριθμοί δεν έχουν εισαχθεί, βγάζει ένα Μήνυμα Σφάλματος μαζί με μια περιγραφή για τον τρόπο χρήσης μιας γραμμής.

Δημιουργήστε ξανά ένα αρχείο με το όνομα ‘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: Όταν οι αριθμοί εισάγονται ως όρισμα γραμμής εντολών, θα λάβετε το αποτέλεσμα όπως φαίνεται.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Ως εκ τούτου, το παραπάνω σενάριο φλοιού πληροί την προϋπόθεση όπως προτείνεται στην ερώτηση.

3. Πρέπει να εκτυπώσετε έναν δεδομένο αριθμό, ας πούμε 10572, με αντίστροφη σειρά χρησιμοποιώντας μια δέσμη ενεργειών Shell έτσι ώστε η είσοδος να παρέχεται χρησιμοποιώντας μόνο το όρισμα γραμμής εντολών. Εάν τα δεδομένα εισόδου δεν παρέχονται ως όρισμα γραμμής εντολών, θα πρέπει να ρίξουν και να λάβουν σφάλμα και θα πρέπει να προτείνουν πώς να χρησιμοποιήσετε το σενάριο. Γράψτε το σενάριο αλλά πριν από αυτό πείτε μου τον αλγόριθμο που πρέπει να εφαρμοστεί εδώ.

Αλγόριθμος

  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: Όταν το Input δεν παρέχεται ως όρισμα γραμμής εντολών, θα λάβετε την ακόλουθη έξοδο.

Δείγμα εξόδου
./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. Υποτίθεται ότι βρίσκετε την τιμή του pi έως και 100 ψηφία δεκαδικού, ποιος είναι ο ευκολότερος τρόπος για να κάνετε το αποτέλεσμα.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Προφανώς! Πρέπει να έχουμε εγκατεστημένο το πακέτο ‘pi’. Απλώς κάντε ένα apt ή yum για να λάβετε ένα απαιτούμενο πακέτο για να εγκαταστήσετε το ‘pi’ στη διανομή που χρησιμοποιείτε.

Αυτα για τωρα. Θα είμαι ξανά εδώ με ένα άλλο ενδιαφέρον άρθρο πολύ σύντομα. Μέχρι τότε μείνετε συντονισμένοι και συνδεδεμένοι στο linux-console.net. Μην ξεχάσετε να μας παράσχετε πολύτιμα σχόλια στην παρακάτω ενότητα σχολίων.