Apakah ada cara saya dapat mendefinisikan kembali fungsi bash dalam hal definisi lamanya? Sebagai contoh saya ingin menambahkan blok kode berikut ke mukadimah fungsi 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
Saat ini didefinisikan dalam /etc/profile.d/PackageKit.sh dan bersumber dari skrip start-up bash.
Dengan cara itu saya dapat meminta nilai variabel lingkungan pada prompt perintah dengan hanya mengetikkan nama variabel (dan asalkan tidak ada perintah seperti itu dengan nama itu ada). misalnya
user@hostname ~:$ LANG
LANG=en_AU.utf8
Saya tahu saya hanya bisa menyalin dan menempelkan definisi saat ini dan menambahkan perubahan saya sendiri ~/.bashrc
, tetapi saya mencari cara yang lebih elegan yang melibatkan penggunaan kembali kode.
Cara yang lebih baik untuk mencapai sasaran atau peningkatan / ekstensi kode saya juga dihargai.
eval
, Anda dapat menggunakan tipuan:local VAL=$(echo ${!1})