希望下面的例子有shopt -s expand_aliases
帮助alias
:
尝试.sh
#! /usr/bin/env bash
shopt -s expand_aliases
# =============================================================
# Define the logger
# =============================================================
alias logger='logger_function [${BASH_SOURCE##*/}] [$FUNCNAME] [$LINENO] '
logger_function()
{
echo $@
}
# =============================================================
# Use the logger
# =============================================================
my_function()
{
logger "hello world!"
}
my_function
测试结果:GNU bash,版本 3.2.57(1)-release
$ ./try.sh
[try.sh] [my_function] [20] hello world!
考虑到问题的重点是:line number,所以在这个例子中,没有使用完全相同的问题输入和输出。
但为了提供更多信息,日志记录实用程序定义添加了:
$BASH_SOURCE
$FUNCNAME
$LINENO
因此,它可以打印文件名、函数名和行号。
关于alias
这里的用法,它看起来像但实际上不能与 C 宏相比,根据:https ://tldp.org/LDP/abs/html/aliases.html