Wyszukiwanie w witrynie

Praktyczne pytania i odpowiedzi podczas rozmowy kwalifikacyjnej na temat skryptów powłoki systemu Linux


Przytłaczający odzew, jaki otrzymujemy w artykułach z serii wywiadów, pierwszym tego typu na jakiejkolwiek stronie z poradnikami dotyczącymi Linuksa, w postaci polubień, opinii w komentarzach, a także osobistych adresów e-mail, pozwala nam przechodzić od jednego artykułu do następnego artykuł.

Oto link do artykułów z serii wywiadów opublikowanych już na linux-console.net, w których omówiliśmy wiele tematów, takich jak FTP, MySQL, Apache, skrypty, polecenia systemu Linux itp.

Kontynuując powyższą serię, przedstawiamy kolejnych 5 wspaniałych pytań do wywiadu na temat Linuksa i odpowiedzi na nie. Twoje wsparcie (czytelników linux-console.net i częstych gości) jest zawsze potrzebne, aby odnieść sukces.

1. Napisz skrypt powłoki, aby uzyskać aktualną datę, godzinę, nazwę użytkownika i bieżący katalog roboczy.

Utwórz teraz plik o nazwie „userstats.sh” i dodaj do niego następujący kod.

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

Umieść uprawnienia do wykonywania i uruchom skrypt, jak pokazano poniżej.

chmod 755 userstats.sh 
./userstats.sh
Przykładowe wyjście
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. Napisz skrypt powłoki, który doda dwie liczby, jeśli zostaną podane jako argument wiersza poleceń, a jeśli te dwie liczby nie zostaną wprowadzone, wyświetli komunikat o błędzie wraz z jednowierszowym opisem sposobu użycia.

Ponownie utwórz plik o nazwie „two-numbers.sh” i dodaj do niego następującą treść.

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

Ustaw uprawnienia wykonawcy do pliku i uruchom skrypt, jak pokazano poniżej.

chmod 755 two-numbers.sh

Warunek 1: uruchomienie skryptu bez wprowadzania dwóch liczb jako argumentu wiersza poleceń spowoduje otrzymanie następujących wyników.

Przykładowe wyjście
./two-numbers.sh

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

Warunek 2: Po wprowadzeniu liczb jako argumentu wiersza poleceń otrzymasz wynik jak pokazano.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Dlatego powyższy skrypt powłoki spełnia warunek zgodnie z sugestią w pytaniu.

3. Musisz wydrukować daną liczbę, powiedzmy 10572, w odwrotnej kolejności, używając skryptu powłoki, tak aby dane wejściowe były podawane wyłącznie za pomocą argumentu wiersza poleceń. Jeśli dane wejściowe nie zostaną podane jako argument wiersza poleceń, powinien zgłosić błąd i zasugerować sposób użycia skryptu. Napisz skrypt, ale wcześniej powiedz mi algorytm, który należy tutaj zaimplementować.

Algorytm

  1. 1. Niech liczba wejściowa=n
  2. 2. Ustaw rev=0, sd=0 (Rewers i pojedyncza cyfra są ustawione na 0)
  3. 3. n % 10, znajdzie i poda pojedynczą cyfrę znajdującą się najbardziej po lewej stronie
  4. 4. Numer odwrotny generowany jest jako rev * 10 + sd
  5. 5. Zmniejsz liczbę wejściową (n) o 1.
  6. 6. jeśli n > 0, przejdź do kroku 3, w przeciwnym razie przejdź do ustawień 7
  7. 7. Drukuj wer

Teraz ponownie utwórz plik o nazwie „numbers.sh” i dodaj do niego następujący podany 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"

Przyznaj uprawnienia do wykonywania pliku i uruchom skrypt, jak pokazano poniżej.

chmod 755 numbers.h

Warunek 1: jeśli jako argument wiersza poleceń nie podano danych wejściowych, otrzymasz następujące dane wyjściowe.

Przykładowe wyjście
./numbers.sh

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

Warunek 2: gdy podano dane wejściowe jako argument wiersza poleceń.

./numbers.sh 10572 

Reverse number is 27501

Powyższy skrypt działał doskonale, a wynik był dokładnie taki, jakiego potrzebowaliśmy.

4. Powinieneś obliczyć liczbę rzeczywistą bezpośrednio z terminala, a nie z żadnego skryptu powłoki. Co zrobisz (powiedzmy, że prawdziwe liczby to 7,56 i 2,453)?

Na przykład uruchom następujące polecenie, aby obliczyć liczby w czasie rzeczywistym za pomocą polecenia bc, jak pokazano.

echo 7.56 + 2.453 | bc

10.013
5. Masz znaleźć wartość pi do 100 miejsc po przecinku, jak najłatwiej uzyskać wynik.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Oczywiście! Musimy mieć zainstalowany pakiet „pi”. Po prostu wykonaj apt lub mniam, aby uzyskać pakiet wymagany do zainstalowania „pi” w dystrybucji, której używasz.

To wszystko na teraz. Niedługo wrócę tu ponownie z kolejnym ciekawym artykułem. Do tego czasu bądź na bieżąco i połącz się z linux-console.net. Nie zapomnij przekazać nam cennych opinii w sekcji komentarzy poniżej.