Pesquisa de site

Perguntas e respostas práticas da entrevista sobre scripts de shell do Linux


Com a resposta esmagadora que estamos recebendo nos artigos da série de entrevistas, os primeiros desse tipo em qualquer site de instruções sobre Linux na forma de curtidas, comentários em comentários e também em endereços de e-mail pessoais, nos fazem passar de um artigo para o próximo artigo.

Aqui está o link para os artigos da Série de Entrevistas já publicados no linux-console.net, onde cobrimos vários tópicos, como FTP, MySQL, Apache, Scripting, Comandos Linux, etc.

Continuando com a série acima, aqui estamos trazendo mais 5 maravilhosas perguntas para entrevistas sobre Linux e suas respostas. Seu apoio (leitores e visitantes frequentes do linux-console.net) é sempre necessário para torná-lo bem-sucedido.

1. Escreva um script de shell para obter a data, hora, nome de usuário e diretório de trabalho atual.

Agora crie um arquivo chamado ‘userstats.sh‘ e adicione o seguinte código a ele.

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

Coloque permissão de execução e execute o script conforme mostrado abaixo.

chmod 755 userstats.sh 
./userstats.sh
Saída de amostra
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. Escreva um Shell Script que adicione dois números, se fornecidos como o argumento da linha de comando, e se os dois números não forem inseridos, ele gerará uma mensagem de erro junto com uma descrição de como usar uma linha.

Crie novamente um arquivo chamado ‘two-numbers.sh‘ e adicione o seguinte conteúdo a ele.

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

Defina a permissão do executor no arquivo e execute o script conforme mostrado abaixo.

chmod 755 two-numbers.sh

Condição 1: Executando o script sem inserir dois números como argumento de linha de comando, você obterá a seguinte saída.

Saída de amostra
./two-numbers.sh

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

Condição 2: Quando números são inseridos como argumento de linha de comando, você obterá o resultado conforme mostrado.

./two-numbers.sh 4 5 

Sum of 4 and 5 is 9

Portanto, o script de shell acima atende à condição sugerida na pergunta.

3. Você precisa imprimir um determinado número, digamos 10572, na ordem inversa usando um script Shell, de forma que a entrada seja fornecida usando apenas o argumento da linha de comando. Se os dados de entrada não forem fornecidos como argumento de linha de comando, deverá gerar um erro e sugerir como usar o script. Escreva o script, mas antes me diga o algoritmo que precisa ser implementado aqui.

Algoritmo

  1. 1. Deixe o número de entrada=n
  2. 2. Defina rev=0, sd=0 (reverso e dígito único definido como 0)
  3. 3. n% 10, encontrará e fornecerá o único dígito mais à esquerda
  4. 4. O número reverso é gerado como rev * 10 + sd
  5. 5. Diminua o número de entrada (n) em 1.
  6. 6. se n> 0, vá para a etapa 3, caso contrário, vá para a etapa 7
  7. 7. Imprimir rev

Agora, novamente, crie um arquivo chamado ‘numbers.sh‘ e adicione o seguinte código fornecido.

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

Conceda permissão de execução no arquivo e execute o script conforme mostrado abaixo.

chmod 755 numbers.h

Condição 1: Quando a entrada não é fornecida como argumento de linha de comando, você obterá a seguinte saída.

Saída de amostra
./numbers.sh

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

Condição 2: quando a entrada foi fornecida como argumento de linha de comando.

./numbers.sh 10572 

Reverse number is 27501

O script acima funcionou perfeitamente e o resultado foi exatamente o que precisávamos.

4. Você deve calcular um cálculo de número real diretamente do terminal e não de qualquer script de shell. O que você fará (digamos que os números reais sejam 7,56 e 2,453)?

Por exemplo, execute o seguinte comando para calcular números em tempo real usando o comando bc conforme mostrado.

echo 7.56 + 2.453 | bc

10.013
5. Você deve encontrar o valor de pi com até 100 casas decimais, qual é a maneira mais fácil de obter o resultado.
pi 100 

3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067

Obviamente! Devemos ter o pacote ‘pi’ instalado. Basta fazer umapt ou yum para obter o pacote necessário para instalar o ‘pi‘ na distribuição que você está usando.

É tudo por agora. Estarei aqui novamente com outro artigo interessante em breve. Até então, fique ligado e conectado ao linux-console.net. Não se esqueça de nos fornecer um feedback valioso na seção de comentários abaixo.