2009-06-19 24 views

Respuesta

51

Claro - en el script, en la que desea utilizar la función, se puede escribir un comando como

source function.sh 

que es equivalente a la inclusión de los contenidos de function.sh en el archivo en el punto en el comando es correr. Tenga en cuenta que function.sh necesita estar en uno de los directorios en $PATH; si no es así, debe especificar una ruta absoluta.

+3

function.sh puede estar en cualquier lugar de su RUTA. Si bash está en modo posix, no se verá en el directorio actual. Todo esto se explica en la página del manual. – camh

+0

Es cierto, lo tenía mezclado con otras cosas. –

+0

Digamos que 'function.sh' también tiene algún código. Will 'source function.sh' también ejecutará el código? – user1527227

9

Sí, puede localizar todas sus funciones en un archivo común (o archivos). Esto es exactamente lo que hago con todas mis funciones de utilidad. Tengo una sola utility.shinc en mi directorio principal que es utilizado por todos mis programas con:

. $HOME/utility.shinc 

que ejecuta la secuencia de comandos en el contexto de la shell actual. Esto es importante: si simplemente ejecuta el script include, se ejecutará en una subcadena y los cambios no se propagarán al shell actual.

Puede hacer lo mismo para grupos de scripts. Si es parte de un "producto", tendería a poner todas las secuencias de comandos y todas las secuencias de comandos incluidas en un solo directorio de shell para garantizar que todo esté localizado.

-2

Sí ... ¡puedes! Agregar fuente nombre_funcional en su secuencia de comandos. Prefiero crear variable eg.VAR = $ (funtion_name), si agrega la fuente nombre_función después de #!/Bin/bash, entonces la secuencia de comandos ejecuta primero la tarea de función importada y luego la tarea de script actual, por lo tanto, es mejor crear variable y usar en cualquier parte del script. gracias .. Espero que funcione para usted :)

+0

¿Por qué está copiando respuestas que se han publicado ... hace 8 años? –

+0

Para una mejor comprensión ... He publicado más brevemente que el anterior. –

Cuestiones relacionadas