GNU/Linux >> Tutoriales Linux >  >> Linux

función de llamada declarada a continuación

Como han dicho otros, no puedes hacer eso.

Pero si desea organizar el código en un archivo para que el programa principal esté en la parte superior del archivo y otras funciones se definan a continuación, puede hacerlo si tiene un main separado. función.

P.ej.

#!/bin/sh

main() {
    if [ "$1" = yes ]; then
        do_task_this
    else
        do_task_that
    fi
}

do_task_this() {
    ...
} 
do_task_that() {
    ...
} 

main "[email protected]"; exit

Cuando llamamos main al final del archivo, todas las funciones ya están definidas. Pasando explícitamente "[email protected]" a main es necesario para que los argumentos de la línea de comandos del script sean visibles en la función.

El exit explícito en la misma línea que la llamada a main no es obligatoria, pero se puede usar para evitar que una secuencia de comandos en ejecución se estropee si se modifica el archivo de secuencia de comandos. Sin él, el shell intentaría continuar leyendo los comandos del archivo de script después de main devoluciones. (consulte ¿Cómo leer todo el script de shell antes de ejecutarlo?)


No, las funciones deben existir en el entorno de shells en el momento de llamarlas.

La "Guía de estilo de Shell" de Google tiene una solución para esto:

Una función llamada main se requiere para secuencias de comandos lo suficientemente largas como para contener al menos otra función.

Al final del script, después de todas las funciones, como la única declaración que no está en una función, tendría

main "[email protected]"

Esto llamaría al main función con los parámetros que se le dio la secuencia de comandos. El main La función podría ubicarse en la parte superior del script (la guía de estilo dice que debe colocarse en la parte inferior, pero, de nuevo, dice muchas cosas).

Cuando el shell llega al main llamada, todas las funciones en el script han sido analizadas y, por lo tanto, se pueden llamar desde dentro del main función.


No, las funciones deben declararse antes de usarse. Los scripts de shell se leen línea por línea y se ejecutan línea por línea; por lo que una función no existe hasta que se haya ejecutado su declaración.


Linux
  1. Llamada a función indefinida simplexml_load_file() – Error de PHP [Resuelto]

  2. ¿Ejecutando la función definida por el usuario en una llamada Find -exec?

  3. Error fatal de Php:llamada a la función indefinida Thesql_connect ()?

  4. Cómo crear y llamar funciones en Bash

  5. ¿Cómo implementar un tiempo de espera en la llamada a la función de lectura?

Error fatal:llamada a la función indefinida mb_substr() Error

llamar a una función cuando el programa haya terminado con ctrl c

¿Por qué una función principal sin declaración de retorno devuelve el valor 12?

¿Cómo puedo obtener lo que ha devuelto mi función principal?

Llame a una función de espacio de usuario desde un módulo del kernel de Linux

Llame a una función C desde el código C++