Zoeken op website

Praktische interviewvragen en antwoorden over Linux Shell Scripting


Met de overweldigende respons die we krijgen op de Interview Series-artikelen, de eerste in zijn soort op elke Linux How-to-website in de vorm van Likes, Feedback in commentaar en op persoonlijk e-mailadres, zorgen ervoor dat we van het ene artikel naar het andere gaan artikel.

Hier is de link naar de artikelen uit de Interview Series die al op linux-console.net zijn gepubliceerd, waar we veel onderwerpen hebben behandeld, namelijk FTP, MySQL, Apache, Scripting, Linux-opdrachten, enz.

Als we verdergaan met de bovenstaande serie, komen we met nog eens 5 prachtige Linux-interviewvragen en hun antwoord. Uw steun (de linux-console.net-lezers en frequente bezoekers) is altijd nodig om het succesvol te maken.

1. Schrijf een shellscript om de huidige datum, tijd, gebruikersnaam en huidige werkmap op te halen.

Maak nu een bestand met de naam ‘userstats.sh‘ en voeg de volgende code eraan toe.

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

Plaats de toestemming voor uitvoeren en voer het script uit zoals hieronder weergegeven.

chmod 755 userstats.sh 
./userstats.sh
Voorbeelduitvoer
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. Schrijf een Shell-script dat twee getallen toevoegt als dit wordt opgegeven als opdrachtregelargument. Als de twee getallen niet worden ingevoerd, wordt er een foutmelding weergegeven samen met een beschrijving van het gebruik in één regel.

Maak opnieuw een bestand met de naam ‘twee-getallen.sh‘ en voeg de volgende inhoud eraan toe.

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

Stel de uitvoerdertoestemming voor het bestand in en voer het script uit zoals hieronder weergegeven.

chmod 755 two-numbers.sh

Voorwaarde 1: Als je het script uitvoert zonder twee cijfers in te voeren als opdrachtregelargument, krijg je de volgende uitvoer.

Voorbeelduitvoer
./two-numbers.sh

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

Voorwaarde 2: Wanneer getallen als opdrachtregelargument worden ingevoerd, krijgt u het resultaat zoals weergegeven.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Daarom voldoet het bovenstaande shellscript aan de voorwaarde zoals voorgesteld in de vraag.

3. U moet een bepaald nummer, bijvoorbeeld 10572, in omgekeerde volgorde afdrukken met behulp van een Shell-script, zodat de invoer alleen wordt geleverd met behulp van het opdrachtregelargument. Als de invoergegevens niet als opdrachtregelargument worden verstrekt, moet er een fout optreden en wordt voorgesteld hoe het script moet worden gebruikt. Schrijf het script, maar vertel me eerst het algoritme dat hier moet worden geïmplementeerd.

Algoritme

  1. 1. Laat het invoernummer=n
  2. 2. Stel rev=0, sd=0 in (omgekeerd en enkel cijfer is ingesteld op 0)
  3. 3. n % 10, zal het meest linkse cijfer vinden en geven
  4. 4. Het omgekeerde nummer wordt gegenereerd als rev * 10 + sd
  5. 5. Verlaag het invoernummer (n) met 1.
  6. 6. als n > 0, ga dan naar stap 3, anders ga naar setp 7
  7. 7. Print rev

Maak nu opnieuw een bestand met de naam ‘numbers.sh‘ en voeg de volgende gegeven code eraan toe.

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

Verleen een uitvoermachtiging voor het bestand en voer het script uit zoals hieronder weergegeven.

chmod 755 numbers.h

Voorwaarde 1: wanneer invoer niet als opdrachtregelargument wordt opgegeven, krijgt u de volgende uitvoer.

Voorbeelduitvoer
./numbers.sh

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

Voorwaarde 2: wanneer invoer werd opgegeven als opdrachtregelargument.

./numbers.sh 10572 

Reverse number is 27501

Het bovenstaande script werkte perfect en de uitvoer was precies wat we nodig hadden.

4. Het is de bedoeling dat u een reële getalberekening rechtstreeks vanuit de terminal berekent en niet via een shellscript. Wat ga je doen (stel dat de echte cijfers 7,56 en 2,453 zijn)?

Voer bijvoorbeeld de volgende opdracht uit om getallen in realtime te berekenen met de opdracht bc, zoals weergegeven.

echo 7.56 + 2.453 | bc

10.013
5. Het is de bedoeling dat je de waarde van pi tot op 100 cijfers achter de komma vindt, wat de gemakkelijkste manier is om het resultaat te krijgen.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Blijkbaar! We moeten pakket ‘pi‘ geïnstalleerd hebben. Voer gewoon apt of yum uit om een vereist pakket te verkrijgen waarmee u ‘pi‘ kunt installeren op de distributie die u gebruikt.

Dat is het voor nu. Ik zal hier binnenkort weer zijn met een ander interessant artikel. Blijf tot die tijd op de hoogte en verbonden met linux-console.net. Vergeet niet om ons waardevolle feedback te geven in het commentaargedeelte hieronder.