Tal vez estoy mirando esto de la manera incorrecta ... Pero aquí estoy lo que estoy tratando de hacer. Realizo la mayor parte de mi trabajo con Java pero solo cambié a un entorno unix (bash). Yo estoy haciendo esto:
[~/Desktop/bashPlay]% cat myFunc
#!/bin/bash
ls2(){
echo "Hello World"
}
ls3(){
echo "Testing"
}
echo "this is a test"
ls2 # this calls a function
[~/Desktop/bashPlay]% myFunc
this is a test
Hello World
Pero tengo dos funciones en mi archivo y quiero poder llamarlas por separado desde la línea de comandos. Es decir: myFunc.ls2()
o incluso solo ls2
. Sé que puedo agregar las funciones a mi .bashrc
archivo, pero ¿hay alguna otra forma de ejecutar estas funciones sin agregarlas a mi .bashrc
?
Otro enfoque sería crear un script llamado
functions.sh
(en el~/bin
directorio, por ejemplo).En este script, agrega todas sus definiciones de funciones personales (digamos que cada vez que agrega una función la agrega a este archivo ...)
Finalmente solo tiene que agregar la
source ~/bin/functions.sh
línea a su.bashrc
archivo. De esta manera podrá llamarlos desde la línea de comandos,.bashrc
permanecerá limpio y tendrá un lugar específico para sus funciones personales.fuente
Si eres como yo, no quieres saturar tu entorno con funciones. También tiene un grupo de funciones que pertenecen juntas en términos de lo que hacen, por lo que tiene sentido colocarlas en el mismo archivo de script. (Sé que una carpeta con varios archivos podría servir para el mismo propósito). Aquí hay una posible solución que le permite llamar a una función específica en el script:
fuente
source
eso, ya que puede manejar tener dos funciones del mismo nombre en dos archivos sh diferentes. Lo refiné para manejar una cantidad arbitraria de parámetros reemplazándolos$1 $2 $3 $4 $5
conFUNC_CALL=$1; shift; $FUNC_CALL "$@"
"$@"
. PD: su enfoque es realmente incorrecto; la última parte debe ser"$FUNC_CALL" "$@"
(es decir,$FUNC_CALL
debe estar entre comillas)."$FUNC_CALL"
?El operador de punto o
source
incorporadobash
es análogo a laimport
declaración en Java.Puede leer más sobre el operador de punto o el
source
incorporado .fuente