Mungkin saya melihat ini dengan cara yang salah .. Tapi di sini saya mencoba melakukan apa. Melakukan sebagian besar pekerjaan saya dengan Java tetapi hanya beralih ke lingkungan unix (bash). Saya melakukan ini:
[~/Desktop/bashPlay]% cat myFunc
#!/bin/bash
ls2(){
echo "Hello World"
}
ls3(){
echo "Testing"
}
echo "this is a test"
ls2 # this calls a function
[~/Desktop/bashPlay]% myFunc
this is a test
Hello World
Tetapi saya memiliki dua fungsi dalam file saya dan saya ingin dapat memanggil mereka secara terpisah dari baris perintah. Yaitu: myFunc.ls2()
atau bahkan adil ls2
. Saya tahu bahwa saya dapat menambahkan fungsi ke .bashrc
file saya, tetapi adakah cara lain untuk menjalankan fungsi ini tanpa menambahkannya ke saya .bashrc
?
Pendekatan lain adalah dengan membuat skrip yang disebut
functions.sh
(dalam~/bin
direktori misalnya).Dalam skrip ini, Anda menambahkan semua definisi fungsi pribadi Anda (katakanlah setiap kali Anda menambahkan fungsi, Anda menambahkannya ke file ini ...)
Akhirnya Anda hanya perlu menambahkan
source ~/bin/functions.sh
baris ke.bashrc
file Anda . Dengan cara ini Anda akan dapat memanggil mereka dari baris perintah, Anda.bashrc
akan tetap bersih, dan Anda akan memiliki tempat khusus untuk fungsi pribadi Anda.sumber
Jika Anda seperti saya, Anda tidak ingin mengacaukan lingkungan Anda dengan fungsi. Anda juga memiliki sekelompok fungsi yang dimiliki bersama dalam hal apa yang mereka lakukan, jadi menempatkannya dalam file skrip yang sama masuk akal. (Saya tahu bahwa folder dengan banyak file dapat melayani tujuan yang sama). Berikut ini adalah solusi yang memungkinkan Anda untuk memanggil fungsi tertentu dalam skrip:
sumber
source
karena dapat menangani memiliki dua fungsi dengan nama yang sama dalam dua file sh yang berbeda. Saya memperbaikinya untuk menangani sejumlah parameter sewenang-wenang dengan menggantinya$1 $2 $3 $4 $5
denganFUNC_CALL=$1; shift; $FUNC_CALL "$@"
"$@"
. PS Pendekatan Anda sebenarnya salah; bagian terakhir harus"$FUNC_CALL" "$@"
(yaitu,$FUNC_CALL
harus dalam tanda kutip)."$FUNC_CALL"
?Operator titik atau
source
bawaanbash
adalah analog denganimport
pernyataan di Jawa.Anda dapat membaca lebih lanjut tentang operator titik atau
source
builtin .sumber