Bir bash işlevini eski tanımı açısından yeniden tanımlamamın bir yolu var mı? Örneğin, işlevin önsözüne aşağıdaki kod bloğunu eklemek istiyorum command_not_found_handle ()
,
# Check if $1 is instead a bash variable and print value if it is
local VAL=$(eval echo \"\$$1\")
if [ -n "$VAL" ] && [ $# -eq 1 ]; then
echo "$1=$VAL"
return $?
fi
Şu anda /etc/profile.d/PackageKit.sh dosyasında tanımlanmıştır ve bash başlangıç komut dosyalarından kaynaklanmıştır.
Bu şekilde, yalnızca değişken adını yazarak (ve bu adla böyle bir komutun bulunmaması koşuluyla) bir komut isteminde ortam değişkeninin değerini sorgulayabilirim. Örneğin
user@hostname ~:$ LANG
LANG=en_AU.utf8
Sadece geçerli tanımı kopyalayıp yapıştırabildiğimi ve kendi değişikliklerimi ekleyebileceğimi biliyorum ~/.bashrc
, ancak kodun yeniden kullanılmasını içeren daha zarif bir yol arıyorum.
Hedefime veya kod geliştirmelerine / uzantılarına ulaşmanın daha iyi yolları da takdir ediliyor.
eval
dolaylı olarak kullanabilirsiniz:local VAL=$(echo ${!1})