Me gustaría escribir una función a la que pueda llamar desde un script con muchas variables diferentes. Por algunas razones, tengo muchos problemas para hacer esto. Los ejemplos que he leído siempre usan una variable global, pero eso no haría que mi código fuera mucho más legible por lo que puedo ver.
Ejemplo de uso previsto:
#!/bin/bash
#myscript.sh
var1=$1
var2=$2
var3=$3
var4=$4
add(){
result=$para1 + $para2
}
add $var1 $var2
add $var3 $var4
# end of the script
./myscript.sh 1 2 3 4
Intenté usar $1
y tal en la función, pero luego solo toma el global desde el que se llamó todo el script. Básicamente, lo que estoy buscando es algo así $1
, $2
etc., pero en el contexto local de una función. Como sabes, las funciones funcionan en cualquier lenguaje apropiado.
echo $1
yecho $2
en ello.result =
conresult=$(($1 + $2))
y agregueecho $result
después y funciona correctamente, $ 1 y $ 2 son sus argumentos de funciones.Respuestas:
Para llamar a una función con argumentos:
La función se refiere a los argumentos pasados por su posición (no por su nombre), es decir, $ 1, $ 2, etc. $ 0 es el nombre del script en sí.
Ejemplo:
Salida
fuente
En el script principal $ 1, $ 2, representa las variables como ya sabes. En los subíndices o funciones, $ 1 y $ 2 representarán los parámetros, pasados a las funciones, como variables internas (locales) para estos subíndices.
fuente