Farklı komut dosyalarına başvurmak ve kullanmak istediğim bir işlev var. Bunu yapmanın bir yolu var mı? Farklı komut dosyaları için aynı işlevi yeniden yazmak istemiyorum. Teşekkürler.Farklı komutlarda bir bash işlevi kullanılabilir mi?
cevap
Emin - Sen işlevini kullanmak istediğiniz komut, komut olduğu noktada dosyada function.sh
içerikleri dahil eşdeğerdir
source function.sh
gibi bir komut yazabilirsiniz içinde koşmak. function.sh
'un $PATH
'daki dizinlerden birinde olması gerektiğini unutmayın; Eğer değilse, mutlak bir yol belirtmeniz gerekir.
Evet, tüm işlevlerinizi ortak bir dosyada (veya dosyalarda) yerelleştirebilirsiniz. Bu benim tüm yardımcı fonksiyonumla yaptığım şey. Geçerli kabuk bağlamında komut çalıştırır
. $HOME/utility.shinc
: Birlikte tüm programlar tarafından kullanılan benim ev dizininde tek utility.shinc
var. Bu önemlidir - eğer içerme komut dosyasını çalıştırırsanız, bir alt kabukta çalışır ve herhangi bir değişiklik mevcut kabukta yayılmaz.
Aynı şeyi komut dosyaları için de yapabilirsiniz. Bir "ürün" ün parçasıysa, her şeyin yerelleştirildiğinden emin olmak için tüm komut dosyalarını ve dahil edilen komut dosyalarını tek bir kabuk dizinine yerleştirmeyi tercih ederim.
Evet, yapabilirsin! Komut dosyanızda kaynak işlev_adı'u ekleyin. Ben example.VAR = $ (funtion_name) değişkenini oluşturmayı tercih ediyorum, eğer kaynak fonksiyon_sayısını #!/Bin/bash'den sonra eklerseniz, betiğiniz önce içe aktarılmış fonksiyon görevini çalıştırır ve o zaman mevcut betik görevinizi daha iyi ve değişken oluşturmak için kullanır. senaryoda her yerde. Teşekkür ederim ... Sizin için işinizi yapın :)
Niçin yayınlanmış olan cevapları kopyalıyorsun ... 8 yıl önce? –
Daha iyi bir anlayış için .. Daha önce kısa bir süre önce yayınladım. –
function.sh, PATH'nizde herhangi bir yerde olabilir. Bash posix modundaysa, geçerli dizine bakmayacaktır. Bu, tüm man sayfada açıklanmıştır. – camh
Doğru, diğer şeylerle karıştırdım. –
Diyelim ki 'function.sh' içinde de bir kod var. Will source function.sh' da kodu yürütün? – user1527227