Saya sering menghasilkan dan mendaftarkan banyak fungsi bash yang mengotomatiskan banyak tugas yang biasanya saya lakukan dalam proyek pengembangan saya. Generasi itu tergantung pada meta-data dari proyek yang saya kerjakan.
Saya ingin membubuhi keterangan fungsi dengan info proyek yang dihasilkan, dengan cara ini:
func1() {
# This function was generated for project: PROJECT1
echo "do my automation"
}
Idealnya, saya dapat melihat komentar ketika saya memeriksa definisi:
$ type func1
func1 is a function
func1 ()
{
# This function was generated for project: PROJECT1
echo "do my automation"
}
Tetapi entah bagaimana bash tampaknya mengabaikan komentar pada saat memuat fungsi, bukan ketika menjalankannya. Jadi komentarnya hilang dan saya mendapatkan hasil ini:
func1 is a function
func1 ()
{
echo "do my automation"
}
Apakah ada cara untuk menetapkan metadata ke fungsi, dan memeriksanya sesudahnya? Dimungkinkan untuk mengambilnya saat memeriksa definisi dengan tipe?
$1
ada-h
, dan kemudianprintf
/echo
bantuan satu baris / penggunaan / apa pun.Jawaban:
sumber
Ya,
type
sepertinya hanya mencetak bagian-bagian dari fungsi yang akan dijalankan. Ini sepertinya masuk akal bagi saya, sungguh, karena biasanya hanya itu yang Anda minati ketika bertanyatype
.Sebagai solusinya, alih-alih menggunakan komentar, tambahkan data meta Anda seperti ini:
Tidak perlu benar-benar menggunakan variabel itu, tetapi itu akan muncul ketika menanyakan fungsi dengan
type
:sumber
Anda dapat menggunakan nop builtin
:
. Selain itu, Anda tidak perlu menyimpannya sebagai variabel:EDIT : Waspadalah terhadap karakter khusus ke dalam metadata Anda. Untuk teks murni, Anda dapat menggunakan:
EDIT : Anda dapat menggunakan array asosiatif global untuk menyimpan semua metadata fungsi:
Dengan cara ini, Anda tidak perlu mem
declare
- parsing atautype
output, tetapi hanya permintaan untuk kunci array.sumber
your metadata here
bisa mengandung ekspansi yang memiliki efek samping. Lebih baik menggunakan tanda kutip tunggal seperti jawaban @ AlexP.Kamu bisa melakukan ini.
sumber
(
dapat digunakan dan kata pertama tidak boleh menjadi perintah yang valid.