Então esta é a 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 $1=Earth
e $2=Mars
. Mas eu sei que isso é errado.
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:
Leitura recomendada sobre parâmetros posicionais: 3.4.1 Parâmetros posicionais