Administração de Linux Question #019e3987
Após emitir:
function myfunction { echo 12 ; }
no Bash, qual saída o comando:
myfunction A B C
produz?
A B
A B C
A C
B C
C B A
Official Explanation / Community Explanations
Resumo
Esta questão testa o entendimento de como funções Bash lidam com parâmetros posicionais. Quando uma função é definida com function myfunction { echo $1 $2 ; }, ela referencia apenas os dois primeiros argumentos ($1 e $2). Chamar myfunction A B C passa três argumentos, mas a função ignora $3. Portanto, a saída é A B.
Como funciona
No Bash, funções usam parâmetros posicionais $1, $2, ..., $N para acessar argumentos passados a elas. $0 é o nome da função (ou do script). As variáveis $@ e $* representam todos os argumentos. Quando uma função é invocada, os argumentos são atribuídos a esses parâmetros. O corpo da função executa com esses parâmetros definidos. Se a função não referencia um parâmetro além dos passados, esses argumentos extras são simplesmente ignorados.
Por que a resposta correta está certa
A opção A (A B) está correta porque a função exibe $1 (primeiro argumento, A) e $2 (segundo argumento, B). O terceiro argumento C não é usado.
Por que as outras opções estão incorretas
- B. A B C: Incorreta porque a função exibe apenas
$1e$2, não$3. - C. A C: Incorreta porque
$2éB, nãoC. A função não pula$2. - D. B C: Incorreta porque
$1éA, nãoB. - E. C B A: Incorreta porque a ordem está invertida e inclui
C, que não é referenciado.