มีวิธีใดที่ฉันสามารถกำหนดฟังก์ชันทุบตีใหม่ในแง่ของนิยามเก่าหรือไม่? ยกตัวอย่างเช่นผมต้องการที่จะเพิ่มบล็อกของรหัสต่อไปคำนำของฟังก์ชั่น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})