Website-Suche

Praktische Fragen und Antworten im Vorstellungsgespräch zum Linux-Shell-Scripting


Mit der überwältigenden Resonanz, die wir auf die Artikel der Interview-Serie erhalten, die ersten ihrer Art auf einer Linux-How-to-Website in Form von „Gefällt mir“-Angaben, Rückmeldungen in Kommentaren sowie auf persönlichen E-Mail-Adressen, blättern wir von einem Artikel zum nächsten Artikel.

Hier ist der Link zu den Artikeln der Interviewreihe, die bereits auf linux-console.net veröffentlicht wurden und in denen wir viele Themen behandelt haben, nämlich FTP, MySQL, Apache, Scripting, Linux-Befehle usw.

Als Fortsetzung der obigen Serie kommen wir mit weiteren 5 wunderbaren Linux-Interviewfragen und deren Antwort. Für den Erfolg ist immer Ihre Unterstützung (der Leser von linux-console.net und der häufigen Besucher) erforderlich.

1. Schreiben Sie ein Shell-Skript, um das aktuelle Datum, die aktuelle Uhrzeit, den Benutzernamen und das aktuelle Arbeitsverzeichnis abzurufen.

Erstellen Sie nun eine Datei mit dem Namen „userstats.sh“ und fügen Sie den folgenden Code hinzu.

#!/bin/bash 
echo "Hello, $LOGNAME" 
echo "Current date is `date`" 
echo "User is `who i am`" 
echo "Current directory `pwd`"

Erteilen Sie die Ausführungsberechtigung und führen Sie das Skript wie unten gezeigt aus.

chmod 755 userstats.sh 
./userstats.sh
Beispielausgabe
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. Schreiben Sie ein Shell-Skript, das zwei Zahlen hinzufügt, wenn es als Befehlszeilenargument angegeben wird. Wenn die beiden Zahlen nicht eingegeben werden, wird eine Fehlermeldung zusammen mit einer einzeiligen Beschreibung der Verwendung ausgegeben.

Erstellen Sie erneut eine Datei mit dem Namen „two-numbers.sh“ und fügen Sie den folgenden Inhalt hinzu.

#!/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.

Legen Sie die Ausführungsberechtigung für die Datei fest und führen Sie das Skript wie unten gezeigt aus.

chmod 755 two-numbers.sh

Bedingung 1: Wenn Sie das Skript ausführen, ohne zwei Zahlen als Befehlszeilenargument einzugeben, erhalten Sie die folgende Ausgabe.

Beispielausgabe
./two-numbers.sh

Usage - ./two-numbers.sh   x    y 
        Where x and y are two nos for which I will print sum

Bedingung 2: Wenn Zahlen als Befehlszeilenargument eingegeben werden, erhalten Sie das Ergebnis wie gezeigt.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Daher erfüllt das obige Shell-Skript die in der Frage vorgeschlagene Bedingung.

3. Sie müssen eine bestimmte Zahl, beispielsweise 10572, in umgekehrter Reihenfolge mithilfe eines Shell-Skripts ausgeben, sodass die Eingabe nur über das Befehlszeilenargument erfolgt. Wenn die Eingabedaten nicht als Befehlszeilenargument bereitgestellt werden, sollte eine Fehlermeldung ausgegeben und Vorschläge zur Verwendung des Skripts gemacht werden. Schreiben Sie das Skript, aber teilen Sie mir vorher den Algorithmus mit, der hier implementiert werden muss.

Algorithmus

  1. 1. Sei die Eingabezahl=n
  2. 2. Setze rev=0, sd=0 (Reverse und Single Digits werden auf 0 gesetzt)
  3. 3. n % 10, findet die einzelne Ziffer ganz links und gibt sie aus
  4. 4. Die Umkehrzahl wird als rev * 10 + sd generiert
  5. 5. Verringern Sie die Eingabenummer (n) um 1.
  6. 6. Wenn n > 0, dann gehe zu Schritt 3, andernfalls gehe zu Setp 7
  7. 7. Rev. drucken

Erstellen Sie nun erneut eine Datei mit dem Namen „numbers.sh“ und fügen Sie den folgenden Code hinzu.

#!/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"

Erteilen Sie eine Ausführungsberechtigung für die Datei und führen Sie das Skript wie unten gezeigt aus.

chmod 755 numbers.h

Bedingung 1: Wenn die Eingabe nicht als Befehlszeilenargument bereitgestellt wird, erhalten Sie die folgende Ausgabe.

Beispielausgabe
./numbers.sh

Usage: ./numbers.sh  number 
       I will find reverse of given number 
       For eg. ./2.sh 123, I will print 321

Bedingung 2: Wenn die Eingabe als Befehlszeilenargument bereitgestellt wurde.

./numbers.sh 10572 

Reverse number is 27501

Das obige Skript funktionierte perfekt und die Ausgabe war genau das, was wir brauchten.

4. Sie sollten eine reelle Zahlenberechnung direkt vom Terminal aus durchführen und nicht über ein Shell-Skript. Was werden Sie tun (sagen wir, die reellen Zahlen sind 7,56 und 2,453)?

Führen Sie beispielsweise den folgenden Befehl aus, um Zahlen in Echtzeit mit dem Befehl bc zu berechnen, wie gezeigt.

echo 7.56 + 2.453 | bc

10.013
5. Sie sollen den Wert von Pi bis zu 100 Dezimalstellen ermitteln. Dies ist der einfachste Weg, das Ergebnis zu erhalten.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Offensichtlich! Wir müssen das Paket „pi“ installiert haben. Führen Sie einfach apt oder yum aus, um ein erforderliches Paket zur Installation von ‘pi‘ auf der von Ihnen verwendeten Distribution zu erhalten.

Das ist alles für den Moment. Ich werde bald wieder mit einem weiteren interessanten Artikel hier sein. Bleiben Sie bis dahin auf dem Laufenden und bleiben Sie mit linux-console.net verbunden. Vergessen Sie nicht, uns im Kommentarbereich unten Ihr wertvolles Feedback zu geben.