Tengo un script shell Bourne que tiene varias funciones en el mismo, y permite a llamarse de la siguiente manera:obtener una lista de nombres de función en una secuencia de comandos shell
my.sh <func_name> <param1> <param2>
Dentro func_name() lo hará ser llamado con param1 y param2.
Quiero crear una función de "ayuda" que simplemente enumere todas las funciones disponibles, incluso sin parámetros.
La pregunta: ¿cómo obtengo una lista de todos los nombres de funciones en un script desde el script?
Me gustaría evitar tener que analizar y buscar patrones de función. Demasiado fácil equivocarse.
Gracias, Alex
actualización del código. Quería que mi función help() fuera como main(): una función añadida al código se agrega automáticamente a la ayuda.
#!/bin/sh
# must work with "set -e"
foo()
{
echo foo: -$1-$2-$3-
return 0
}
# only runs if there are parameters
# exits
main()
{
local cmd="$1"
shift
local rc=0
$cmd "[email protected]" || rc=$?
exit $rc
}
if [[ "$*" ]]
then
main "[email protected]"
die "how did we get here?"
fi
"Bourne shell"? No conozco ** ninguna ** distribución de Linux que envíe Bourne de fábrica o que haya tenido; '/ bin/sh' es prácticamente universal POSIX sh (un estándar de décadas más nuevas con un conjunto diferente de incompatibilidades, por ejemplo, Bourne trata'^'como un personaje de tubería, POSIX sh no; Bourne usa' $ [] ' para matemáticas, POSIX sh usa '$ (())', etc.). –
@CharlesDuffy ¿Tiene una fuente para eso? –
@OleTange, ¿qué parte? (Ciertamente confiaba en "en Linux" para omitir casos como SunOS/Solaris anterior, donde POSIX sh ha estado en una ubicación diferente, pero (1) se hizo referencia en mi comentario, y (2) la pregunta es tan etiquetado). –