2012-12-11 20 views
21

Ciao, sono nuovo nello script SHELL. In realtà ho una funzione err() nel file di abc i file non sono con .sh estensioni sono semplici file, ma a partire da #!/bin/bashImportazione funzione script shell

err() { 
echo "${1}" >&2 
} 

Ora sto importarlo in un file diverso xyz

source abc 
someFunction(){ 
err "Failed to back up" 
} 

E ' un modo giusto di importare?

risposta

22

Sì, si può fare come lei ha citato sopra o simile: . FILENAME

Il file non deve finire con .sh

4

va bene, ecco alcuni ulteriori suggerimenti:

  1. Usa una convenzione di denominazione per le funzioni, ad esempio prefisso il nome della funzione con f_, ad esempio f_err. Le chiamate alle funzioni non appaiono diverse come altri comandi, questo è un suggerimento per il lettore. Riduce anche le possibilità di una collisione di nome.

  2. È necessario solo l'accesso in lettura e non è necessario il #!/bin/bash (è solo un commento).

  3. In Bash, alcune opzioni devono essere impostate prima dell'analisi delle funzioni. Ad esempio, shopt -s extglob deve essere eseguito prima e all'esterno della funzione se utilizza il globbing esteso. Metterlo dentro la funzione è troppo tardi.

  4. Bash non supporta la variabile di ambiente FPATH o il caricamento automatico (come fa la shell Korn).

2

È necessario esportazione funzioni appena create

a fine abc aggiungere questo:

export -f err 
+0

Hai solo bisogno di esportare la funzione di renderlo disponibile in una subshell (uno iniziato eseguendo un'altra istanza di bash). Dopo aver acquisito il file, tutte le funzioni definite saranno disponibili nella shell corrente. – chepner