Considere o seguinte bash script (Linux): meuscript.sh #!/...

Próximas questões
Com base no mesmo assunto
Q1245041 Programação
Considere o seguinte bash script (Linux):
meuscript.sh #!/bin/bash echo 'Digitado: '$1 : ' i=0 while [ $i -le 2 ] do mkdir $1 ((i++)) done ' 
Assinale a alternativa que representa o que ocorrerá quando for executado ($bash meuscript.sh 192.168.0.1).
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: A

Fundamento decisivo: O critério decisivo é a semântica do trecho com ":" no Bash: o conteúdo entre ": '" e a aspa simples de fechamento após o bloco é tratado como string passada ao builtin ":", de modo que o while e o mkdir não entram em execução. Como a chamada é "bash meuscript.sh 192.168.0.1", $1 recebe "192.168.0.1" e a alternativa correta é a que indica apenas a saída de texto.

Tema central: Interpretação de script Bash
Análise das alternativas
A
Certa
A alternativa A está correta porque o comando efetivamente ativo é "echo 'Digitado: '$1". Na execução informada, "$1" recebe "192.168.0.1". A parte entre aspas simples produz o literal "Digitado: " e, fora dessas aspas, "$1" é expandido, resultando na saída "Digitado: 192.168.0.1". O restante do trecho não produz efeito operacional, pois está encapsulado pela construção com ":" e aspas simples.
B
Errada
Está errada porque depende da execução de "mkdir $1", mas esse comando aparece apenas dentro do bloco iniciado por ": '" e fechado após o "done". Como esse trecho não entra em execução, não há criação de diretório.
C
Errada
Está errada por dois motivos técnicos: não há comando ativo que crie diretório algum, e "$1" não representa o nome do script. Na chamada mostrada, "$1" é o primeiro argumento posicional após o nome do script, isto é, "192.168.0.1"; logo, não há base para associar a criação de diretório a "meuscript.sh".
D
Errada
Está errada porque pressupõe que o laço while será executado e chamará mkdir repetidamente, o que não ocorre. Sem o while ativo, não há repetição que produza diretórios, e a nomeação automática com sufixos "(1)" e "(2)" não decorre do comportamento padrão do comando mkdir em Bash/Linux.
E
Errada
Está errada porque não existe laço em execução. O while está dentro do trecho encapsulado após ":", que não é interpretado como código executável. Portanto, não há iteração nem possibilidade de loop infinito na execução apresentada.
Pegadinha da questão
A banca explora a confusão entre código visivelmente escrito e código realmente executado: o bloco com while e mkdir parece ativo, mas está neutralizado por ": ' ... '"; também induz erro em quem troca "$1" pelo nome do script.
Dica para questões semelhantes
  • Antes de analisar efeitos de comandos, verifique se o trecho está realmente em execução ou apenas encapsulado como string.
  • Em Bash, confirme o significado dos parâmetros posicionais: "$1" é o primeiro argumento passado ao script, não o nome do arquivo do script.
  • Se uma alternativa depende de while, mkdir ou outro comando interno ao bloco, ela cai junto se o bloco estiver desativado.
  • Não atribua ao mkdir comportamentos de renomeação automática sem apoio expresso no próprio enunciado ou na base.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

✅Gabarito(A)

#!/bin/bash echo 'Digitado: '$1 : ' i=0 while [ $i -le 2 ] do mkdir $1 ((i++)) done '

Executado $bash meuscript.sh 192.168.0.1

O tipo $1 está relacionado com o argumento passado via linha de comando logo após o nomes do script.

$0 corresponde ao nome do script, $1 ao primeiro argumento, $2 ao segundo argumento, e assim sucessivamente.

Fonte:https://www.devmedia.com.br/introducao-ao-shell-script-no-linux/25778

Não teria que criar um diretório?

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo