Чи є спосіб переосмислити функцію bash з точки зору її старого визначення? Наприклад, я хотів би додати до преамбули функції наступний блок коду 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
Наразі це визначено в /etc/profile.d/PackageKit.sh та джерело скриптів запуску bash.
Таким чином я можу запитати значення змінної середовища в командному рядку, просто ввівши ім'я змінної (за умови, що такої команди під цим іменем не існує). напр
user@hostname ~:$ LANG
LANG=en_AU.utf8
Я знаю, що міг би просто скопіювати та вставити поточне визначення та додати власні зміни ~/.bashrc
, але я шукаю більш елегантний спосіб, який передбачає повторне використання коду.
Також вдячні кращі способи досягнення моєї цілі або покращення / розширення коду.
eval
ви можете використовувати непряме:local VAL=$(echo ${!1})