Relacionado con question 3451993, ¿es posible llamar a una función que es interna a subst.c (en el código fuente Bash) en un script Bash?Función de llamada C en el script Bash
Respuesta
Bash admite compilaciones cargables. Es posible que pueda hacer uso de esto para hacer lo que quiera. Vea los archivos en su directorio /usr/share/doc/bash/examples/loadables
(o similar).
La forma más sencilla de hacerlo es escribir un programa simple que recopila la entrada, la envía a la función y luego imprime el resultado. ¿Por qué no nos dices qué estás intentando lograr y quizás podemos sugerir una manera más fácil de "pelar a este gato"?
Estoy tratando de llamar a una función que es interna de Bash, pero parece que no está compilada en un comando de shell separado. Por favor, mira el enlace para más información. – l0b0
Es muy difícil hacer esto y generalmente es muy poco confiable. Es mejor que trates de obtener lo que quieres de una manera diferente. – Jay
@ l0b0: volver a formular la pregunta no equivale a decir lo que está tratando de lograr. – msw
No.
No se puede acceder a una función interna para el binario cáscara de la cáscara si no se exporta como una función de shell.
No, tendrás que escribir un breve programa C, compilarlo y llamarlo desde el shell.
Este código se ve bastante elegante: (desde here) Es la misma solución que @Jay señaló.
bash$ cat testing.c
#include <stdio.h>
char* say_hello()
{
return "hello world";
}
float calc_xyzzy()
{
return 6.234;
}
int main(int argc, char** argv)
{
if (argc>1) {
if (argv[1][0] =='1') {
fprintf(stdout,"%s\n",say_hello());
} else if (argv[1][0] == '2') {
fprintf(stdout,"%g\n",calc_xyzzy());
}
}
return 0;
}
bash$ gcc -o testing testing.c
bash$ ./testing 1
hello world
bash$ ./testing 2
6.234
bash$ var_1="$(./testing 1)"
bash$ var_2="$(./testing 2)"
bash$ echo $var_1
hello world
bash$ echo $var_2
6.234
bash$
- 1. Llamar a una función python desde el script bash
- 2. Script Bash para ejecutar el script php
- 3. Cómo atrapar el código de salida en el script Bash
- 4. ¿Se recomienda atrapar SIGPIPE en script bash?
- 5. Script bash de autodejección
- 6. Anular una llamada de función en C
- 7. cómo rastrear llamada de función en C?
- 8. Llamada C# dll función de C++/CLI
- 9. Cómo ejecutar un script bash desde el programa C++
- 10. Variables de script de bash en línea
- 11. variables de parámetro bash en el problema de script
- 12. función asíncrona llamada C++ 0x
- 13. Compruebe si existe una función desde un script bash
- 14. ¿Puedo ejecutar 'su' en el medio de un script bash?
- 15. Script Git commit bash
- 16. Script Bash no entendido por Ubuntu Bash
- 17. Indenting Bash Script Output
- 18. encuentro "operador unario esperado" en el script bash
- 19. C++ identificador de llamada de función
- 20. Script Bash: uso del comando "script" de un script bash para iniciar sesión
- 21. Bash Script - Leer archivo binario
- 22. Convención de llamada personalizada X86_64 a C llamada a función
- 23. ¿Puede un script de python ejecutar una función dentro de un script bash?
- 24. ¿Cómo accedo/cygdrive/c/.. en un script bash?
- 25. asíncrona llamada de función para C++
- 26. función recursiva en bash
- 27. C++ y destructor llamada de función para
- 28. Validación de parámetros en un script Bash
- 29. Ejecutando script bash desde java
- 30. Salida JSON del script Bash
Buena idea. Desafortunadamente 'grep subst/usr/share/doc/bash/examples/loadables/*' no devolvió nada. – l0b0
@ l0b0: Eso solo significa que tienes que escribir el tuyo. Además, 'grep subst/usr/include/bash/*' da '/usr/include/bash/shell.h:#include" subst.h "', 'grep shell.h/usr/share/doc/bash/examples/loadables/* 'da un montón. Desafortunadamente, 'grep prompt/usr/share/doc/bash/examples/loadables/*' no da nada, pero 'grep prompt/usr/include/bash/subst.h' se ve interesante. –