Saya memiliki file yang bersumber dari aplikasi, menambahkan direktori yang relevan ke $ PATH dan $ LD_LIBRARY_PATH.
Ini baik-baik saja, tetapi menghasilkan polusi yang agak berlebihan pada $ PATH dan $ LD_LIBRARY_PATH, karena beberapa jalur ditambahkan, sekitar 2/3 di antaranya tidak ada.
Saya dapat menguji keberadaan direktori menggunakan [ ! -d $VARIABLE_TO_ADD_TO_PATH ]
, tetapi jika saya menemukan direktori itu tidak ada, unsetting sepertinya lebih sulit.
Saya dapat menulis (untuk masing-masing mungkin 10 variabel)
if [ ! -d $VAR ]
unset VAR
fi
tapi saya lebih suka memiliki fungsi.
Saya mencoba:
_testPathAndUnset()
{
while [ $# -ge 1 ]
do
dirToTest=${1/startPattern/\$startPattern}
if [ ! -d $dirToTest ]
unset $1
fi
shift
done
}
meneruskan nilai dalam bentuk seperti _testPathAndUnset VAR1 VAR2 VAR3
(tidak $VAR1 $VAR2 $VAR3
), tapi sekarang saya memiliki string yang tidak berkembang.
Menggunakan eval
mungkin menyelesaikan ini untuk saya, tetapi pertanyaan lain, jawaban, situs web dll dll menyarankan ini umumnya ide yang buruk.
Bagaimana saya bisa mengatasi masalah ini dengan cara yang lebih baik daripada 30 baris 10x3?
if [ ! -d $VAR ]
unset VAR
fi