当前位置:   article > 正文

Shell内建命令之unset、alias、builtin、caller_unset alias

unset alias

unset

unset [-fnv] [name],移除变量或函数名。-v选项,name和它引用的变量将被删除。-f选项,name和它引用函数定义将被删除。-n选项,name是一个带有nameref属性的变量,那么name会被删除,而它以引用的变量不会被删除。如果提供-f选项,则-n无效。如果没有指定任何选项,在name默认引用的是一个变量,如果没有这个名字的变量,任何具有该名称的函数都会被删除。只读变量和函数不能删除。返回状态为0,除非name是只读的。

alias

alias [-p] [name[=value] …],如果没有参数或-p选项,alias将在标准输出上打印别名列表。如果指定了name和value,则会定义一个别名。如果只有name没有value,则会输出别名的name和value。

builtin

builtin [shell-builtin [args]],运行shell内置函数,将args传递给函数,并返回退出状态。在定义与shell内置函数同名的shell函数时非常有用,可以在函数中保留内置函数的功能。如果shell-builtin不是shell内置命令,则返回状态为非零。

caller

caller命令返回当前活动的子程序调用(包括shell函数或者使用.或source命令执行的脚本)的上下文。如果未指定expr,caller显示当前子例程调用的源文件名和行号。如果expr是一个非负整数,caller显示行号、子程序名以及当前执行调用栈此位置对应的源文件名。可以使用这些额外信息进行堆栈跟踪。当前栈帧是0。返回值为0,除非shell没有执行子进程调用或expr不是调用堆栈中的有效位置。

  1. #!/bin/bash
  2. foo(){
  3. echo "foo invoked"
  4. caller
  5. }
  6. bar(){
  7. echo "bar invoked"
  8. caller 0
  9. }
  10. baz(){
  11. echo "baz invoked"
  12. caller
  13. echo "============"
  14. caller 0
  15. echo "============"
  16. caller 1
  17. echo "============"
  18. caller 2
  19. }
  20. baz2(){
  21. echo "baz2 invoked"
  22. baz
  23. }
  24. baz3(){
  25. echo "baz3 invoked"
  26. baz2
  27. }
  28. foo
  29. bar
  30. baz3

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/197492
推荐阅读
相关标签
  

闽ICP备14008679号