Cegah inklusi ulang bash

1

Saya memiliki sarang skrip bash yang dapat saling sumber, mis. a.sh sumber b.sh sumber a.sh dll ... Selain mendesain ulang, yang mungkin tidak selalu layak, praktik apa yang terbaik untuk menghindari loop sumber?

Salah satu pendekatan yang saya miliki adalah menggunakan keberadaan fungsi yang diberikan yang menunjukkan, bukan untuk sumber skrip ini lagi. misalnya

a.sh: 
    declare -F a
    if [ $? -eq 0 ]
    then
        return
    fi
    ...
    function a()
    {
    }

yang lain adalah memiliki beberapa variabel per file "$ sourced_a_sh" dan jika disetel kembali.

Mereka semua tampak sangat murung. Apakah ada cara yang lebih baik?

Neil McGill
sumber

Jawaban:

1

Anda dapat menambahkan ini sebagai baris pertama dalam skrip Anda a.sh:

[ "$sourced_a_sh" != "" ] && return || sourced_a_sh=.
Cyrus
sumber
Bagus. Ini tentu ringkas 8)
Neil McGill