Como crear e chamar funcións en Bash

Unha guía rápida sobre como crear e chamar funcións en Bash.

Unha función é un bloque de código reutilizable que se usa para realizar algunha acción. Coas funcións, obtemos unha mellor modularidade e un alto grao de reutilización de código.

Bash ofrece algunhas funcións integradas como echo e read, pero tamén podemos crear as nosas propias funcións.




Creación dunha función en Bash

Hai dúas formas de crear funcións en Bash:

Un xeito é só usar o nome da función, por exemplo:


functionName(){ // scope of function }

Versión compacta:

functionName(){ echo 'hello'; }

Outro xeito é declarar unha función usando o function palabra clave:

function functionName { // scope of function }

Versión compacta:

function functionName { echo 'hello'; }

Fíxate como non necesitamos o () ao usar o function palabra clave para crear unha función.


Puntos importantes a ter en conta sobre as funcións de Bash:

  • O código entre as chaves {} é a función corpo e alcance
  • Ao chamar a unha función, só usamos o nome da función desde calquera lugar do script bash
  • A función debe definirse antes de que poida usarse
  • Cando se usa a versión compacta, o último comando debe ter un punto e coma ;

Exemplo:

O seguinte código crea unha función que imprime 'Hello World' na consola. Chámase o nome da función printHola :

#!/bin/bash printHello(){
echo 'Hello World!' }


Chamando a unha función en Bash

Como chamamos á función anterior? Todo o que tes que facer no teu script bash é escribir o nome da función e chamarase.


Por exemplo:

#!/bin/bash printHello(){
echo 'Hello World!' } # Call printHello function from anywhere in the script by writing the name printHello

Saída:

'Hello World'

Pasando argumentos

A función anterior printHello() non ten ningún parámetro. Cada vez que o chamamos, obtemos a saída 'Hello World'. Pero e se quixésemos crear unha función máis xenérica? Por exemplo, podemos chamar á función con algún argumento e imprimirá o que lle enviamos.

Hai dúas formas de facelo.


Primeiro podemos modificar o printHello() función para imprimir os argumentos que se lle pasan:

Por exemplo:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny World printAny DevQa printAny I love coding!

Saída:

Hello World Hello DevQA Hello I

Observe como a terceira declaración de impresión printAny I love coding! só emitiu 'Ola, eu'.


Isto débese a que a nosa función está deseñada para tomar só 1 parámetro $1. A palabra 'Encántame codificar!' é realmente 3 parámetros.

Se quixésemos imprimilo todo, teriamos que poñer comiñas ao redor do texto

Por exemplo:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny 'I love coding!'

Saída:

Hello I love coding

Outro exemplo, tamén podemos pasar en cifras:

#!/bin/bash add() {
result=$(($1 + $2))
echo 'Result is: $result' } add 1 2

Saída:

Result is: 3

Valores retornables

As funcións de Bash tamén poden devolver valores.

Por exemplo:

#!/bin/bash add() {
result=$(($1 + $2)) } add 1 2 echo 'The sum is: '$result

Saída:

The sum is: 3

Outra forma de devolver valores dunha función é asignar o resultado a unha variable que se pode usar cando e cando sexa necesario.

Por exemplo:

#!/bin/bash add () { local result=$(($1 + $2)) echo '$result' } result='$(add 1 2)' echo 'The sum is: '$result

Saída:

The sum is: 3