zoukankan      html  css  js  c++  java
  • ${FUNCNAME[@]}和$LINENO使用

    $LINENO
    代表shell脚本的当前行号

    [root@mysql-B ~]# cat test1.sh 
    #!/bin/bash
    trap 'echo “before execute line:$LINENO, a=$a,b=$b,c=$c”' DEBUG
    a=1
    if [ "$a" -eq 1 ]
    then
       b=2
    else
       b=1
    fi
    c=3
    echo "end"
    
    [root@mysql-B ~]# ./test1.sh 
    “before execute line:3, a=,b=,c=”
    “before execute line:4, a=1,b=,c=”
    “before execute line:6, a=1,b=,c=”
    “before execute line:10, a=1,b=2,c=”
    “before execute line:11, a=1,b=2,c=3”
    end

    $FUNCNAME
    表示函数的名字,它是一个数组变量,其中包含了整个调用链上所有的函数的名字,故变量${FUNCNAME[0]}代表shell脚本当前正在执行的函数的名字,而变量${FUNCNAME[1]}则代表调用函数${FUNCNAME[0]}的函数的名字,依此类推。

    [root@mysql-B ~]# cat test1.sh 
    #!/bin/bash
    
    test1() {
      echo "aaa"
      local a=${FUNCNAME[@]}
      echo $a
    }
    
    
    test2() {
      test1
    }
    test2
    
    [root@mysql-B ~]# ./test1.sh 
    aaa
    test1 test2 main  #输出结果为一个数组,第一个是被调用的函数名称,第二个是调用的函数名称,
                想只输出被调用的函数名称时,把@替换成0,想输入调用函数的名称时,@替换成1
  • 相关阅读:
    天文望远镜(二)
    天文望远镜(一)
    安静
    JavaScript 私有类字段和 TypeScript 私有修饰符
    js解析剪切板里的excel内容
    js正则
    jquery扩展方法:实现模拟Marquee无限循环滚动
    js中onload和ready区别
    Js如何从字符串中提取数字?
    JSBridge 初探
  • 原文地址:https://www.cnblogs.com/zx3212/p/9335656.html
Copyright © 2011-2022 走看看