2009-06-19 13 views

risposta

51

Certo - nello script, in cui si desidera utilizzare la funzione, è possibile scrivere un comando come

source function.sh 

che equivale ad includere il contenuto del function.sh nel file nel punto in cui il comando è correre. Si noti che function.sh deve trovarsi in una delle directory in $PATH; se non lo è, è necessario specificare un percorso assoluto.

+3

function.sh può essere ovunque nel PERCORSO. Se bash è in modalità posix, non cercherà nella directory corrente. Questo è tutto spiegato nella pagina man. – camh

+0

Vero, l'ho fatto confondere con altre cose. –

+0

Diciamo che 'function.sh' ha anche del codice. Anche 'source function.sh' eseguirà il codice? – user1527227

9

Sì, è possibile localizzare tutte le funzioni in un file (o file) comune. Questo è esattamente ciò che faccio con tutte le mie funzioni di utilità. Ho un singolo utility.shinc nella mia home directory che viene utilizzato da tutti i miei programmi con:

. $HOME/utility.shinc 

che esegue lo script nel contesto della shell corrente. Questo è importante: se si esegue semplicemente lo script di inclusione, verrà eseguito in una subshell e tutte le modifiche non si propagheranno alla shell corrente.

È possibile fare la stessa cosa per gruppi di script. Se è parte di un "prodotto", tenderei a mettere tutti gli script e gli script inclusi in una singola directory di shell per assicurare che tutto sia localizzato.

-2

Sì..si può! Aggiungi origine nome_funzione nel tuo script. Preferisco creare variabile eg.VAR = $ (funtion_name), se aggiungi il nome_funzione source dopo #!/Bin/bash allora lo script esegue prima l'attività della funzione importata e quindi l'attività di script corrente, quindi è meglio creare variabile e usato ovunque nella sceneggiatura. grazie ... Spero che funzioni per voi :)

+0

Perché copi le risposte che sono state pubblicate ... 8 anni fa? –

+0

Per una migliore comprensione ... ho postato più brevemente di quello precedente. –

Problemi correlati