2011-08-03 17 views

cevap

5

İşlevlerinizi dışa aktarmanız gerekir. Oluşturulduğunda her şeyi (tercihim) set -a ile dışa aktarabilir veya işlevleri tek tek export -f showxx ile dışa aktarabilirsiniz. Ya çevreye koyacağız ve çocuk mermileri onları toplayabilecek.

+0

Bu, istediğim tam olarak ne sayesindedir. –

+0

+1 to @evilotto: 'ihracat -f' hakkında bilmiyordum. Teşekkürler! – shellter

3

Yerel işlemin 'kapsamında' görünecek işlevi tanımlamanız gerekir.

Komut satırına bir işlev girdiğinizde, artık terminal kabuğunun bash'ın kopyası içinde 'yaşıyor'. Bir komut dosyası başlattığınızda

, export ile işaretlenmiştir sadece değişkenler terminalinin bir çocuk olarak çalışan Bash yeni kopyanın içine görebilir. (Şu anda export'a girmeyeceğiz ;-).

Komut dosyanızın içindeki işlevi almak için, komut dosyasının içinde tanımlamanız gerekir.

cat a.bash 
#!/bin/bash 
function showxx() { echo xx; } 
showxx 

VEYA o yani

cat showxx.bfn 
function showxx() { echo xx; } 

cat a.bash 
. showxx.bfn 
showxx 

, dosya içindeki uzantısı sanki bunu ayrı bir dosya ve (ile '') 'kaynak' İşlevin, bu yüzden olabilir. bfn, bfn = 'bash function' gibi dosyanın içinde ne olduğunu belgelemek için kullandığım bir şey.

'.' kaynak komuttur.

Umarım bu yardımcı olur.

P.S. yeni bir kullanıcı gibi göründüğü gibi, size yardımcı olacak bir yanıt alırsanız, bunu kabul edildi olarak işaretlemeyi unutmayın ve/veya yararlı bir cevap olarak bir + (veya -) verin.

1

Komut dosyanızı bir nokta ve boşluk ile çağırın.

. a.bash