A analista Priscila escreveu o seguinte shell script no arqu...
#!/bin/bash
alias echo3='echo -n TRF'
function echo2 () { $echo1 }
echo1='echo TRF'
$echo1 echo2 echo3
Priscila executou o script acima em um terminal com o interpretador Bash, através do comando “bash q03.sh”.
Após a execução do comando, Priscila observou que a string “TRF” foi impressa na saída do terminal:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é: C - duas vezes.
Vamos analisar o funcionamento do script q03.sh para entender essa resposta.
Este script escrito em shell script para o interpretador Bash começa com a linha #!/bin/bash
, que indica que o arquivo deve ser executado usando o Bash.
Primeiro, temos um alias declarado: alias echo3='echo -n TRF'
. O alias cria um comando personalizado chamado echo3
, que executa echo -n TRF
, imprimindo "TRF" na tela sem uma nova linha.
Em seguida, temos uma função chamada echo2
com o seguinte conteúdo:
function echo2 () { $echo1 }
A função echo2
executa o conteúdo da variável echo1
. É importante notar que a variável echo1
é definida após a função, como echo1='echo TRF'
. A definição da variável echo1
indica que ela contém o comando echo TRF
.
Agora, vamos passo a passo:
$echo1
: Quando executado, imprime "TRF" porque a variávelecho1
armazena o comandoecho TRF
.echo2
: Chama a funçãoecho2
, que executa$echo1
, novamente imprimindo "TRF".echo3
: Executa o aliasecho3
, que imprime "TRF" sem uma nova linha.
Assim, após a execução do script, a string "TRF" é impressa duas vezes no terminal: uma vez pela execução direta de $echo1
e outra vez pela função echo2
. A execução de echo3
não contribui ou altera isso, pois ocorre no ambiente do script e não afeta a saída devido ao contexto de execução.
Agora, vamos discutir as outras alternativas:
A - uma vez: Incorreta, pois o script imprime "TRF" duas vezes, não uma.
B - três vezes: Incorreta, pois o script não imprime "TRF" três vezes; o alias echo3
não é executado no mesmo contexto do script, apenas quando chamado fora de um script, após o script definir o alias.
D - nenhuma vez, gerando erro: Incorreta, pois não há erros de execução no script que impeçam a impressão de "TRF".
E - nenhuma vez, sem gerar erro: Igualmente incorreta, pois o script funciona corretamente e imprime "TRF" duas vezes.
Espero que essa explicação tenha sido útil para entender como o script funciona e por que a alternativa C é a correta. Gostou do comentário? Deixe sua avaliação aqui embaixo!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo