Funciones en scripts de shell

Definición de función

A las variables les damos un valor para usar. Una función es como una tecla de método abreviado. Después de definir una función, podemos usar la función que establecimos simplemente haciendo referencia a su nombre de función correspondiente.

Creación y uso de funciones

el código se muestra a continuación:

#!/bin/bash
function functionname(){
    
          ##function可以不写,functionname
							是这个函数的名字,使用时就是引用这个名字
	echo "haha"
	echo "heihei"
	echo "hello"
}
##函数定义格式 function functionname(){
    
    },花括号里输入我们需要的命令
##小括号里不需要写东西

functionname               ##调用函数,注意调用函数一定要在函数定义
							后才可以

Intenta ejecutar este script

[root@haha ~]# sh test.sh 
haha
heihei
hello

Podemos ver que varios comandos logran el efecto deseado llamando al nombre de la función

El valor de retorno de la función

De forma predeterminada, el estado de salida de una función es el estado de salida devuelto por el último comando de la función

#!/bin/bash
function functionname(){
    
         
	echo "haha"
	echo "heihei"
	echo "hello"
	ls -l inexistent.txt                ##查看一个不存在的文件
}
functionname
echo "function's status:$?"

Ejecuta este script

[root@haha ~]# sh test.sh 
haha
heihei
hello
ls: cannot access inexistent.txt: No such file or directory
function's status:2

Podemos ver que la función ejecuta tres comandos con éxito, el último comando reporta un error y el valor de estado no es 0 para
cambiar la posición del comando en la función.

#!/bin/bash
function functionname(){
    
         
	ls -l inexistent.txt          
	echo "haha"
	echo "heihei"
	echo "hello"
}
functionname
echo "function's status:$?"

Ir a ejecutar el script

[root@haha ~]# sh test.sh 
ls: cannot access inexistent.txt: No such file or directory
haha
heihei
hello
function's status:0

Después de cambiar la posición, el valor de estado es 0, por lo que, por defecto, el estado de salida de la función es el estado de salida devuelto por el último comando de la función.

comando de retorno

return es la palabra clave Shell, utilizada específicamente para devolver un valor en una función

#!/bin/bash
function functionname(){
    
         
   echo "haha"
   echo "heihei"
   echo "hello"
   return    111         ##试着用下return
   ls -l inexistent.txt      
}
functionname
echo "function's status:$?"
[root@haha ~]# sh test.sh 
haha
heihei
hello
function's status:111

Después de verificar return, no es difícil ver que return no solo devuelve un valor de salida al programa que llamó a la función, sino que también sale de la ejecución de la función.Si el mensaje de error de ls no se muestra, significa que no se ha ejecutado.

Asignar función a uso variable

#!/bin/bash
functionname(){
    
    
	read -p "input a value:" VAR
	echo $[$VAR * 5]
}
NUM=$(functionname)           ##将函数赋值给变量
echo "current num is $NUM"      ##打印这个变量
[root@haha ~]# sh test.sh 
input a value:3
current num is 15

Pasar parámetros a la función

El primer caso: pasar parámetros dentro del script

#!/bin/bash
functionname() {
    
    
    if [ $# -eq 0 ] || [ $# -gt 2 ]
    then
        echo "错误,需要一个或者两个位置参数"
    elif [ $# -eq 1 ]
    then
        echo $[ $1 + $1 ]
    else
        echo $[ $1 + $2 ]
    fi
}


echo -n "用两个参数的结果是:"
value=`functionname 100 200`     ##在脚本中用类似输入位置变量的形式
													对函数functionname传递参数
echo $value

echo -n "用一个参数的结果是: "
value=`functionname 100`
echo $value

echo -n "没有参数的结果是:"
value=`functionname`
echo $value

echo -n "用三个参数的结果是:"
value=`functionname 100 200 300`
echo $value
[root@haha ~]# sh test.sh 
用两个参数的结果是:300
用一个参数的结果是: 200
没有参数的结果是:错误,需要一个或者两个位置参数
用三个参数的结果是:错误,需要一个或者两个位置参数

El segundo caso: transferir parámetros manualmente en forma de variables de posición

#!/bin/bash
functionname(){
    
    
	echo $[ $1 * $2 ]     ##这里的$1,$2引用脚本中的位置参数
     echo $3
}

if [ $# -eq 2 ]
then
	value=`functionname $1 $2 haha`    ##这里的$1$2引用外面的位置
	                                   参数 ,haha传给函数中的$3
	echo "The result is $value"
else
	echo "Usage:$0 a b"
fi
[root@haha ~]# sh test.sh 
Usage:test.sh a b
[root@haha ~]# sh test.sh 3 
Usage:test.sh a b

[root@haha ~]# sh test.sh 3 6
The result is 18
haha

para resumir

La referencia de la función puede permitirnos lograr el efecto de script que necesitamos en un lenguaje conciso y hermoso en un script complejo.

Supongo que te gusta

Origin blog.csdn.net/weixin_52441468/article/details/112284159
Recomendado
Clasificación