Funciones en Unix - Diferentes tipos de funciones en Unix con sintaxis

Tabla de contenido:

Anonim

Introducción a las funciones en Unix

En este artículo, aprenderemos sobre algunas funciones básicas en Unix. Muchos de nosotros ya podríamos haber sabido qué son las Funciones, pero permítanme darles una breve introducción al respecto. Una función contiene un conjunto de instrucciones para ser ejecutadas por un código escrito dentro de un bloque sangrado. Estos son útiles cuando tenemos una determinada tarea que un programa tiene que hacer repetidamente durante intervalos regulares de tiempo. Obviamente, no se recomienda escribir el mismo código cada vez, por lo que con las funciones podemos reutilizar fácilmente el código y llamarlo cuando sea necesario. Veamos ahora cómo podemos definir e implementar estas funciones a través de secuencias de comandos de Unix Shell.

Sintaxis de funciones en Unix

La creación de funciones sigue el código de sintaxis básica de la siguiente manera. Ejemplo de muestra de una función.

Código

First()
(
echo “ First Program for defining functions ”;
echo “ Yayyy! “;
)

Aquí, hemos escrito dos declaraciones de eco dentro de nuestra Primera Función. Para llamar a la función, podemos llamar por el nombre de la función.

Salida

Pasar parámetros para funcionar en Unix

Hemos realizado con éxito una Función simple, la llamamos y ejecutamos los comandos que requerimos. Ahora, ¿qué pasa si necesito agregar dos números a través de los valores ingresados ​​por el usuario? Entonces, aquí veríamos cómo podemos escribir una función con argumentos. La sintaxis básica sería la misma. Ejemplo de función parametrizada

Código

Second()
(
echo “Enter your name: “;
read name;
echo “Hi $name, have a good day”;
)

Salida

Nos pedirá que ingresemos un nombre y les deseamos

Del mismo modo, incluso podemos crear un archivo de script. Escribamos una función de suma dentro de un script de shell y veamos cómo funciona.

Código

vi add.sh
echo “enter first number: “;
read a;
echo “enter the second number: “;
read b;
sum=$((a+b));
echo “ Result is $sum”;
*********************
Save the file with : wq!

Salida

Nota: A veces, al ejecutar el script sh, podemos obtener el error como:

Lo único que tiene que hacer aquí es actualizar los permisos del archivo.

Incluso podemos ejecutar el archivo sh usando el comando by. /add.sh

Del mismo modo, incluso podemos ejecutar una función proporcionando argumentos de línea de comandos. Entonces, veamos cómo podemos hacer esto mediante la suma de tres números.

Código

(
number1=$1;
number2=$2;
number3=$3;
sum=$((number1+number2+number3));
echo “Sum is $sum”;
)

Ahora podemos pasar nuestros números como argumentos de línea de comandos y luego obtener nuestra salida requerida.

¿Qué pasa si no pasamos ningún argumento a la función?

¿Y si damos solo dos argumentos?

De lo contrario, ¿podemos pasar cadenas?

Incluso podemos tener nuestro código de tal manera que pueda reflejar un error cuando se pasan argumentos no válidos. A continuación, veamos cómo podemos pedirle al usuario que ingrese argumentos si no se pasaron argumentos de la línea de comandos.

Código

Add()
(
number1=$1;
number2=$2;
if ( $# -ne 2 ); then
echo “ Enter two numbers to add “;
fi
sum=$((number1+number2));
echo “ Sum is : $sum “;
)

Salida

Si no pasamos ningún argumento a nuestra Función, da nuestro eco donde hemos pedido dar dos números de línea de comando y luego dar la salida de la suma. Lo hace, ya que no le dijimos a la función que se detuviera si encontramos el error. En el segundo caso, podemos ver la salida dando una suma adecuada sin ningún eco intermedio. Incluso podemos usar comandos de retorno para devolver valores para estas funciones de Unix. El valor en la declaración de devolución se almacena en $?

Salida

Como ejercicio, ¿puedes intentar escribir una función que explote si no pasamos los argumentos?

Funciones anidadas en Unix

Al nombrar podemos darnos cuenta de que las funciones anidadas se trata de definir una función dentro de una función. Veamos cómo podemos hacer eso ahora. Estamos escribiendo esto dentro de un script de shell para facilitar la comprensión.

Código

vi Nested_Function.sh
***** Code Inside the sh Function*******
#!/bin/sh
First()
(
echo “ Inside First Function “;
echo “ Calling the second function below “;
echo “**********”;
Second
echo “**********”;
echo “ After calling Second function “;
)
Second()
(
echo “ Inside Second Function”;
echo “ Done “;
)
First
************************
Save the file with : wq!

Salida

En el ejemplo anterior, acabamos de llamar a la segunda función dentro de la primera. Ahora escriba una función dentro de la primera función solamente.

Código

vi Nest_Func1.sh
***** Code Inside the sh Function*******
First_One()
(
echo “ Inside the function First_One”;
echo “ Below is the inner function “;
Second_One()
(
echo “ ********** “;
echo “ Inside Inner function”;
echo “ Completed Second Function”;
echo “ ********** “;
)
echo “Done with second example too”;
)
First_One
Second_one
************************
Save the file with : wq!

Ahora, ¿qué salida esperas? ¿Crees que se mostrarían los detalles de la primera y la segunda función?

Salida

Podemos ver claramente que la Función no llamó a la función interna dentro de ella. Entonces, ¿cuál es el problema aquí?

Dentro de nuestro script, hemos llamado solo la primera Función. Ahora intente llamando a la segunda función también. Como se observó, aquí no podremos llamar a la función por sí misma. En el código anterior, hemos resaltado el código agregado.

Salida

Observe que el eco que hemos escrito después de la ejecución de la Segunda Función ha venido antes que él. Ahora, si tratamos de llamar a la segunda Función primero, ¿seguida de la Primera?

Salida

Podemos entender claramente que hasta que se llame a la función principal / primera, no se llamará a la función interna. Como ejercicio, ¿puedes probar la suma de dos números usando funciones anidadas? (Uno para ingresar valores de usuario y otros para agregar los números)

Conclusión

Entonces, así es como podemos definir funciones en Unix. Y una gran ventaja en Unix que encontré fue que el error en la salida se puede entender fácilmente y puede ayudar a rectificar nuestro código en consecuencia. Intente ejecutar esas funciones y use el comando return también. Ten un feliz aprendizaje en Unix.

Artículo recomendado

Esta ha sido una guía de funciones en Unix. Aquí discutimos una introducción a las funciones en Unix y diferentes tipos de funciones junto con la sintaxis y la explicación detallada. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Arquitectura Unix
  2. Comandos de Unix
  3. Usos de Unix
  4. Preguntas de la entrevista UNIX
  5. Guía para operadores de Unix