cáscara de notas de estudio 11-break, continue, salida, el aprendizaje retrurn

1. Descripción

descanso (control de lazo), continuar (control de la circulación), salida (salida del script), retorno (función de salida)

¿Qué descanso, continuar en sentencias condicionales y sentencias de bucle (por, mientras que, si, etc.) programa de control a
los que el estado de ejecución de la salida y la salida de todas las declaraciones en el guión, la salida también puede volver al valor programa o comando anterior en el shell actual
, que es rentabilidad similar a la salida, pero sólo para volver dentro de la función de ejecución de la función devuelve un valor de estado.

"N" se explica

comando explicación
ruptura n N representa un cabo sin todo el ciclo, y n representa el número de capas fuera del ciclo
continuará n              N representa sin omitir este ciclo, ignorando el ciclo de libro de código restante, el siguiente ciclo en la circulación. n representa la capa de n-ésima se retiró continúan ciclo
salida n Salir del programa shell actual, n es el estado de la última ejecución del valor de retorno. n puede omitirse, la cáscara siguiente por "¥?" n recibe la salida de la planta
retorno n Se utiliza en la función como valor de retorno de la función para determinar si la función se ejecuta correctamente. La cáscara puede recibir la siguiente salida n por n-planta "$?"

2, un diagrama de flujo

función de interrupción diagrama de flujo se ejecuta

mientras que a la ruptura

para-break

continuar diagrama de flujo funcional

mientras-continue

fines de continuar

salida de flujo funcional

mientras-salida

para la salida

3, ejemplo básico

guión

#!/bin/bash
if [[ $# -ne 1 ]]; then #<==如果传参数个数不为1,则打印下面的使用提示。
    #statements
    echo $"usage:0 {break|continue|exit|return}" #<==分别传入4个命令作为参数
    exit 1              #<==退出脚本
fi
test(){                 #<==定义测试函数
    for (( i = 0; i <= 5; i++ )); do
        #statements
        if [[ $i -eq 3 ]]; then
            #statements
            $*;         #<==这个地方的"$*"就是接收函数外的参数将来就是{break|continue|exit|return}中的一个
        fi
        echo $i
    done
    echo "I am in func." #<==循环外的输出提示
}
test $*                  #<==这里的”$*“为函数的传参
func_ret=$?              #<==接收并测试函数返回值
if [[ `echo $*|grep return|wc -l` -eq 1 ]]; then #<==如果传参有return
    #statements
    echo "return's exit status:$func_ret"        #<==提示return退出状态
fi
echo "ok"                                        #<==函数外的输出提示

resultado

Resultados comando break entrantes

[root@test1 test]# ./break1.sh 
usage:0 {break|continue|exit|return}
[root@test1 test]# ./break1.sh break
0
1
2
I am in func.  #<==循环外的输出提示
ok             #<==函数外的输出提示

Veo, I es igual a 3 y siguientes ciclos no se realiza, pero el eco se realiza fuera del bucle, que se lleva a cabo para salir y si por lazo externo, y luego realizar la impresión comunicado realiza fuera bien después de que el bucle for

Entrante continúan resultados de los comandos

[root@test1 test]# ./break1.sh continue      
0
1
2   #<==没有3
4
5
I am in func.  #<==循环外的输出提示
ok             #<==函数外的输出提示

Puedo ver solamente igual a 3 esta capa no se ejecuta, la otra se realiza, ECHO también se realiza fuera del bucle, esta es la única explicación continuar la terminación de la Este ciclo "3"

comando de entrada de salida

[root@test1 test]# ./break1.sh exit
0
1
2

Para salir de la cáscara

comando de retorno entrante

[root@test1 test]# ./break1.sh return
0
1
2
return's exit status:0
ok

Podemos ver la función de salida, y provocando el código de salida de retorno

la salida de entrada 118 y de retorno 118

[root@test1 test]# ./break1.sh "exit 118"
0
1
2   #<==只打印了0,1,2
[root@test1 test]# echo $?
118
[root@test1 test]# ./break1.sh "return 118"
0
1
2
return's exit status:118    #<==确实将118返回到了函数的外部脚本
ok
[root@test1 test]# echo $?
0                           #<==执行脚本后的返回值还是0
[root@test1 test]# 

La salida 118 se puede ver para salir del bucle, no hay ninguna función de salida bien externo, el valor de retorno del 118 especificada
puede ver el retorno de 118, se cierra la función y devuelve el valor de la salida 118, y la salida ok función externa

Por favor indique la fuente: https://www.cnblogs.com/zhangxingeng/p/12524324.html

Supongo que te gusta

Origin www.cnblogs.com/zhangxingeng/p/12524324.html
Recomendado
Clasificación