Praktiniai interviu klausimai ir atsakymai apie Linux Shell scenarijų


Sulaukę didžiulio atgarsio interviu serijos straipsnių, kurie yra pirmieji tokio pobūdžio bet kokioje „Linux How-to“ svetainėje. Patinka, atsiliepimai komentaruose ir asmeninis el. pašto adresas, verčia mus pereiti nuo vieno straipsnio prie kito. straipsnis.

Čia yra nuoroda į Interviu serijos straipsnius, jau paskelbtus linux-console.net, kur aptarėme daug temų, pvz., FTP, MySQL, Apache, Scripting, Linux komandos ir kt.

Tęsdami aukščiau pateiktą seriją, pateikiame dar 5 nuostabius „Linux“ interviu klausimus ir atsakymą į juos. Jūsų (linux-console.net skaitytojų ir dažnų lankytojų) palaikymas visada reikalingas, kad jis būtų sėkmingas.

1. Parašykite apvalkalo scenarijų, kad gautumėte dabartinę datą, laiką, vartotojo vardą ir esamą darbo katalogą.

Dabar sukurkite failą „userstats.sh“ ir pridėkite prie jo šį kodą.

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

Įveskite vykdymo leidimą ir paleiskite scenarijų, kaip parodyta toliau.

chmod 755 userstats.sh 
./userstats.sh
Pavyzdžio išvestis
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. Parašykite apvalkalo scenarijų, kuris prideda du skaičius, jei nurodytas kaip komandos eilutės argumentas, o jei du skaičiai neįvesti, išvedamas klaidos pranešimas kartu su vienos eilutės naudojimo aprašymu.

Dar kartą sukurkite failą pavadinimu two-numbers.sh ir pridėkite prie jo toliau nurodytą turinį.

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

Nustatykite failo vykdytojo leidimą ir paleiskite scenarijų, kaip parodyta toliau.

chmod 755 two-numbers.sh

1 sąlyga: vykdydami scenarijų neįvesdami dviejų skaičių kaip komandinės eilutės argumento, gausite tokią išvestį.

Pavyzdžio išvestis
./two-numbers.sh

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

2 sąlyga: kai skaičiai įvedami kaip komandinės eilutės argumentas, gausite tokį rezultatą, kaip parodyta.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Taigi aukščiau pateiktas apvalkalo scenarijus atitinka sąlygą, kaip siūloma klausime.

3. Turite atspausdinti nurodytą skaičių, pvz., 10572, atvirkštine tvarka naudodami Shell scenarijų, kad įvestis būtų pateikta naudojant tik komandinės eilutės argumentą. Jei įvesties duomenys nepateikiami kaip komandinės eilutės argumentas, jis turėtų išmesti ir suklysti bei pasiūlyti, kaip naudoti scenarijų. Parašykite scenarijų, bet prieš tai pasakykite man algoritmą, kurį čia reikia įdiegti.

Algoritmas

  1. 1. Tegul įvesties skaičius=n
  2. 2. Nustatykite rev=0, sd=0 (atvirkštinis ir vienas skaitmuo nustatytas į 0)
  3. 3. n % 10, suras ir pateiks vieną kairįjį skaitmenį
  4. 4. atvirkštinis skaičius generuojamas kaip rev * 10 + sd
  5. 5. Sumažinkite įvesties skaičių (n) 1.
  6. 6. jei n > 0, pereikite prie 3 žingsnio, kitu atveju pereikite prie 7 nustatymo
  7. 7. Spausdinti rev

Dabar vėl sukurkite failą „numbers.sh“ ir pridėkite nurodytą kodą.

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

Suteikite failo vykdymo leidimą ir paleiskite scenarijų, kaip parodyta toliau.

chmod 755 numbers.h

1 sąlyga: kai įvestis nepateikiama kaip komandinės eilutės argumentas, gausite šią išvestį.

Pavyzdžio išvestis
./numbers.sh

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

2 sąlyga: kai įvestis buvo pateikta kaip komandinės eilutės argumentas.

./numbers.sh 10572 

Reverse number is 27501

Aukščiau pateiktas scenarijus veikė puikiai, o išvestis buvo tokia, kokios mums reikėjo.

4. Turėtumėte apskaičiuoti realų skaičių tiesiai iš terminalo, o ne iš bet kokio apvalkalo scenarijaus. Ką darysite (tarkime, kad tikrieji skaičiai yra 7,56 ir 2,453)?

Pavyzdžiui, paleiskite šią komandą, kad apskaičiuotumėte skaičius realiuoju laiku naudodami komandą bc, kaip parodyta.

echo 7.56 + 2.453 | bc

10.013
5. Turite rasti pi reikšmę iki 100 skaičių po kablelio, koks yra lengviausias būdas gauti rezultatą.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Aišku! Turime turėti įdiegtą paketą „pi“. Tiesiog atlikite apt arba yum, kad gautumėte reikiamą paketą, kad įdiegtumėte pi į naudojamą platinimą.

Tai kol kas viskas. Labai greitai vėl būsiu čia su kitu įdomiu straipsniu. Iki tol sekite naujienas ir prisijunkite prie linux-console.net. Nepamirškite pateikti mums vertingų atsiliepimų toliau pateiktame komentarų skyriuje.