Trong BASH, bạn có thể lấy tên hàm trong phần thân hàm không? Lấy các mã sau đây làm ví dụ, tôi muốn in tên hàm "Kiểm tra" trong phần thân của nó, nhưng "$ 0" dường như chỉ đến tên kịch bản thay vì tên hàm. Vậy làm thế nào để có được tên hàm?Trong BASH, bạn có thể lấy tên hàm trong phần thân hàm không?
#!/bin/bash
function Test
{
if [ $# -lt 1 ]
then
# how to get the function name here?
echo "$0 num" 1>&2
exit 1
fi
local num="${1}"
echo "${num}"
}
# the correct function
Test 100
# missing argument, the function should exit with error
Test
exit 0
Cảm ơn, điều này thực sự hữu ích. Tôi học nhiều hơn chỉ là giải pháp cho câu hỏi của tôi. Mảng này có thể được sử dụng để in callstack khi kịch bản thất bại. –
Chắc chắn. Về vấn đề đó, bạn cũng có thể tìm thấy nội dung của 'BASH_LINENO' để được quan tâm. – FatalError
Hoặc bạn có thể sử dụng $ FUNCNAME ngắn hơn và tương đương. –