Ricerca nel sito web

Domande e risposte sull'intervista pratica sullo scripting della shell Linux


Con la travolgente risposta che stiamo ottenendo con gli articoli della serie di interviste, i primi nel loro genere su qualsiasi sito Web Linux How-to sotto forma di Mi piace, Feedback nei commenti e indirizzi e-mail personali, ci fanno passare da un articolo all'altro articolo.

Ecco il collegamento agli articoli della serie di interviste già pubblicati su Tecint.com, in cui abbiamo trattato molti argomenti, ad esempio FTP, MySQL, Apache, Scripting, comandi Linux, ecc.

Continuando con la serie precedente eccoci qui con altre 5 meravigliose domande per interviste su Linux e la loro risposta. Il tuo supporto (i lettori di linux-console.net e i visitatori abituali) è sempre necessario per avere successo.

1. Scrivi uno script di shell per ottenere la data, l'ora, il nome utente e la directory di lavoro correnti.

Ora crea un file chiamato "userstats.sh" e aggiungivi il seguente codice.

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

Posiziona l'autorizzazione di esecuzione ed esegui lo script come mostrato di seguito.

chmod 755 userstats.sh 
./userstats.sh
Uscita del campione
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. Scrivere uno script di shell che aggiunga due numeri se forniti come argomento della riga di comando e se i due numeri non vengono immessi genera un messaggio di errore insieme a una riga di descrizione dell'uso.

Crea nuovamente un file chiamato "two-numbers.sh" e aggiungivi il seguente contenuto.

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

Imposta l'autorizzazione dell'esecutore sul file ed esegui lo script come mostrato di seguito.

chmod 755 two-numbers.sh

Condizione 1: eseguendo lo script senza inserire due numeri come argomento della riga di comando, otterrai il seguente output.

Uscita del campione
./two-numbers.sh

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

Condizione 2: quando i numeri vengono inseriti come argomento della riga di comando otterrai il risultato come mostrato.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Quindi lo script di shell sopra soddisfa la condizione suggerita nella domanda.

3. È necessario stampare un determinato numero, ad esempio 10572, in ordine inverso utilizzando uno script Shell in modo tale che l'input venga fornito utilizzando solo l'argomento della riga di comando. Se i dati di input non vengono forniti come argomento della riga di comando, dovrebbero generare un errore e suggerire come utilizzare lo script. Scrivi lo script ma prima dimmi l'algoritmo che deve essere implementato qui.

Algoritmo

  1. 1. Sia il Numero di Ingresso=n
  2. 2. Impostare rev=0, sd=0 (la cifra inversa e singola è impostata su 0)
  3. 3. n % 10, troverà e fornirà la singola cifra più a sinistra
  4. 4. il numero inverso viene generato come rev * 10 + sd
  5. 5. Diminuire il numero di input (n) di 1.
  6. 6. se n > 0, vai al passo 3 altrimenti vai al setp 7
  7. 7. Stampa rev

Ora di nuovo, crea un file chiamato "numbers.sh" e aggiungilo il seguente codice.

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

Concedere un'autorizzazione di esecuzione sul file ed eseguire lo script come mostrato di seguito.

chmod 755 numbers.h

Condizione 1: quando l'input non viene fornito come argomento della riga di comando, otterrai il seguente output.

Uscita del campione
./numbers.sh

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

Condizione 2: quando l'input è stato fornito come argomento della riga di comando.

./numbers.sh 10572 

Reverse number is 27501

Lo script sopra ha funzionato perfettamente e l'output era proprio ciò di cui avevamo bisogno.

4. Dovresti calcolare un calcolo di numeri reali direttamente dal terminale e non da uno script di shell. Cosa farai (diciamo che i numeri reali sono 7,56 e 2,453)?

Ad esempio, esegui il comando seguente per calcolare i numeri in tempo reale utilizzando il comando bc come mostrato.

echo 7.56 + 2.453 | bc

10.013
5. Dovresti trovare il valore di pi greco fino a 100 cifre decimali, qual è il modo più semplice per ottenere il risultato.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Ovviamente! Dobbiamo avere il pacchetto "pi" installato. Basta fare a apt o yum per ottenere il pacchetto necessario per installare 'pi' sulla distribuzione che stai utilizzando.

È tutto per ora. Sarò di nuovo qui con un altro articolo interessante molto presto. Fino ad allora restate sintonizzati e connessi a linux-console.net. Non dimenticare di fornirci il tuo prezioso feedback nella sezione commenti qui sotto.