Weboldal keresés

Gyakorlati interjúkérdések és válaszok a Linux Shell Scriptingről


Az elsöprő választ kapunk az Interjúsorozat cikkeire, ami az első a maga nemében bármely Linux Útmutató webhelyen, a tetszésnyilvánítások, a megjegyzésekben található visszajelzések, valamint a személyes e-mail-címek formájában. cikk.

Itt található a link az Interview Series cikkekhez, amelyek már megjelentek a linux-console.net oldalon, ahol számos témával foglalkoztunk, például: FTP, MySQL, Apache, Scripting, Linux Commands stb.

Folytatva a fenti sorozatot, újabb 5 csodálatos linuxos interjúkérdéssel és a rájuk adott válaszokkal jelentkezünk. Az Ön (a linux-console.net olvasói és gyakori látogatói) támogatása mindig szükséges a sikerhez.

1. Írjon egy shell szkriptet az aktuális dátum, idő, felhasználónév és aktuális munkakönyvtár lekéréséhez.

Most hozzon létre egy „userstats.sh” nevű fájlt, és adja hozzá a következő kódot.

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

Adja meg a végrehajtási engedélyt, és futtassa a szkriptet az alábbiak szerint.

chmod 755 userstats.sh 
./userstats.sh
Minta kimenet
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. Írjon egy Shell Scriptet, amely két számot ad hozzá, ha parancssori argumentumként szerepel, és ha a két szám nincs megadva, akkor hibaüzenetet ad ki egy soros használati leírással együtt.

Ismét hozzon létre egy „two-numbers.sh” nevű fájlt, és adja hozzá a következő tartalmat.

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

Állítson be végrehajtói engedélyt a fájlhoz, és futtassa a szkriptet az alábbiak szerint.

chmod 755 two-numbers.sh

1. feltétel: Ha futtatja a szkriptet két szám parancssori argumentumként való megadása nélkül, a következő kimenetet kapja.

Minta kimenet
./two-numbers.sh

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

2. feltétel: Ha számokat ad meg parancssori argumentumként, a képen látható eredményt kapja.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Ezért a fenti shell-szkript teljesíti a kérdésben javasolt feltételt.

3. Ki kell nyomtatnia egy adott számot, mondjuk az 10572-t, fordított sorrendben egy Shell-szkript segítségével úgy, hogy a bemenetet csak a parancssori argumentum használatával adja meg. Ha a bemeneti adatok nem parancssori argumentumként vannak megadva, akkor dobnia kell, és hibáznia kell, és javaslatot kell tennie a szkript használatára. Írja meg a szkriptet, de előtte mondja meg az itt megvalósítandó algoritmust.

Algoritmus

  1. 1. Legyen a bemeneti szám=n
  2. 2. Állítsa be a rev=0, sd=0 (fordított és egyjegyű 0-ra van állítva)
  3. 3. n % 10, megkeresi és megadja a bal oldali legszélső számjegyet
  4. 4. fordított szám generálódik rev * 10 + sd
  5. 5. Csökkentse a bemeneti számot (n) 1-gyel.
  6. 6. ha n > 0, akkor lépjen a 3. lépésre, különben lépjen a 7. beállításra
  7. 7. Rev

Most ismét hozzon létre egy „numbers.sh” nevű fájlt, és adja hozzá a következő megadott kódot.

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

Adjon végrehajtási engedélyt a fájlnak, és futtassa a szkriptet az alábbiak szerint.

chmod 755 numbers.h

1. feltétel: Ha a bemenet nincs megadva parancssori argumentumként, a következő kimenetet kapja.

Minta kimenet
./numbers.sh

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

2. feltétel: Amikor a bemenetet parancssori argumentumként adták meg.

./numbers.sh 10572 

Reverse number is 27501

A fenti szkript tökéletesen működött, és a kimenet pont olyan volt, amire szükségünk volt.

4. Valós számot kell kiszámítanod közvetlenül a terminálból, nem pedig shell-szkriptből. Mit fog tenni (mondjuk a valós számok 7,56 és 2,453)?

Például futtassa a következő parancsot a számok valós idejű kiszámításához a bc paranccsal, az ábra szerint.

echo 7.56 + 2.453 | bc

10.013
5. Meg kell találnod a pi értékét 100 tizedesjegyig, mi a legegyszerűbb módja az eredmény elkészítésének.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Magától értetődően! Telepítenünk kell a „pi” csomagot. Csak hajtsa végre aapt vagy ayum parancsot, hogy megkapja a szükséges csomagot a 'pi' telepítéséhez az Ön által használt disztribúcióra.

Ez minden most. Hamarosan ismét itt leszek egy másik érdekes cikkel. Addig is maradjon velünk, és csatlakozzon a linux-console.net-hoz. Ne felejtsen el értékes visszajelzést adni nekünk az alábbi megjegyzés részben.