function e passar argumentos

1

Então, esta é minha primeira função:

#!/bin/bash

lets_print () {

    echo hello $1
}

lets_print Earth

lets_print Mars

pronto para mostrar resultado

user@bash$ ./demo.sh

Hello Earth

Hello Mars

E esta é a minha segunda função:

#!/bin/bash

lets_print () {

    echo hello $1 $2
}

lets_print Earth

lets_print Mars

pronto para mostrar o segundo resultado:

user@bash$ ./demo.sh

Hello Earth

Hello Mars

Alguém pode explicar por que eles têm o mesmo resultado?

Agora, estou pensando em $1=Earth e $2=Mars . Mas eu sei que isso está errado.

    
por Denny 14.04.2018 / 02:06

1 resposta

4

Eles estão mostrando o mesmo resultado porque você está passando apenas um parâmetro posicional por chamada de função. Para que mars seja o segundo parâmetro, você precisa chamar assim:

lets_print Earth Mars

Leituras recomendadas sobre parâmetros posicionais: 3.4.1 Parâmetros posicionais

    
por 14.04.2018 / 02:10