Correlato a question 3451993, è possibile chiamare una funzione che è interna a subst.c (nel codice sorgente Bash) in uno script Bash?Chiamata funzione C in script Bash
risposta
Bash supporta builtin caricabili. Potresti riuscire a farne uso per fare ciò che vuoi. Vedere i file nella directory /usr/share/doc/bash/examples/loadables
(o simile).
Il modo più semplice per eseguire questa operazione è scrivere un semplice programma che raccolga l'input, lo invii alla funzione, quindi stampa il risultato. Perché non ci dici cosa stai cercando di realizzare e forse possiamo suggerire un modo più semplice per "skin this cat".
Sto provando a chiamare una funzione interna a Bash, ma sembra che non sia stata compilata in un comando shell separato. Si prega di consultare il link per maggiori informazioni. – l0b0
È molto difficile farlo e di solito è molto inaffidabile. Stai meglio cercando di ottenere quello che vuoi in un modo diverso. – Jay
@ l0b0: riaffermare la domanda non equivale a dire quello che stai cercando di realizzare. – msw
No.
Non è possibile accedere a una funzione interna al binario shell dalla shell se non viene esportata come una funzione di shell.
No, dovrai scrivere un breve programma in C, compilarlo e chiamarlo dalla shell.
Questo codice sembra piuttosto elegante: (da here) La stessa soluzione ha sottolineato @Jay.
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. Restituzione dell'output da script di bash alla chiamata della funzione C++
- 2. Funzione vuota in BASH
- 3. Funzione di chiamata al termine dello script
- 4. C++ funzione di chiamata identificativo
- 5. È possibile utilizzare una funzione di bash in diversi script?
- 6. chiamata SQL funzione definita in C#
- 7. Costruttore di chiamata come funzione in C#
- 8. Ignora una chiamata di funzione in C
- 9. Inizializzazione array C++ in chiamata di funzione o chiamata costruttore
- 10. È consigliabile intercettare SIGPIPE in bash script?
- 11. Dichiarare una funzione awk in bash
- 12. Nodejs: Wrapping intero script in una chiamata di funzione
- 13. Chiamata funzione C++ da script JavaScript in esecuzione in un controllo browser Web
- 14. script bash da eseguire in 5 minuti
- 15. "Questo venerdì" in script bash
- 16. parametri di script in Bash
- 17. Espressione regolare in Bash Script
- 18. Errore standard_in in script bash
- 19. Chiamata funzione javascript in iframe
- 20. Come utilizzare il comando 'history-c' in uno script bash?
- 21. utilizzando condizioni composte in script shell bash
- 22. Verificare se esiste una funzione da uno script bash
- 23. Accedere agli argomenti dello script Bash all'interno di una funzione
- 24. Chiamare una funzione python da uno script bash
- 25. Script Bash con menu grafici
- 26. Convenzione di chiamata X86_64 personalizzata alla chiamata di funzione C
- 27. Esecuzione script Cmder bash
- 28. Come uscire da una funzione di script Bash originario
- 29. Chiamata di funzione virtuale C++ rispetto a boost :: chiamata di funzione in senso orario
- 30. Variabili di script bash in linea
Buona idea. Sfortunatamente 'grep subst/usr/share/doc/bash/examples/loadables/*' non ha restituito nulla. – l0b0
@ l0b0: significa solo che devi scrivere il tuo. Inoltre, 'grep subst/usr/include/bash/*' fornisce '/usr/include/bash/shell.h:#include" subst.h "', 'grep shell.h/usr/share/doc/bash/esempi/caricabili/* 'dà un mucchio. Sfortunatamente, 'grep prompt/usr/share/doc/bash/examples/loadables/*' non fornisce nulla, ma 'grep prompt/usr/include/bash/subst.h' sembra interessante. –