主页 > 开源代码  > 

bash查看变量函数定义和值(typedeclare)

bash查看变量函数定义和值(typedeclare)
查看所有函数

compgen -A function

查看函数定义 type指令

type -a function_name

declare指令

declare -f function_name

查看函数对应文件 delcare

shopt -s extdebug; declare -F function_name

指令解析 type

type [-afptP] [name ...] 功能: 对于给定的name, 输出其被当作指令输入时会被解析成什么; 比如set是内置; ls是别名; vim是文件指令;

ch@ch:~/ch$ type -t ls quote set vim if alias function builtin file keyword

-t: 仅仅输出类型; 没有name提供则不输出, 返回值也是错误; -p: name类型是file类型, 则会输出对应文件位置; 类似which; -a: 输出所有name指令对应所有信息;所有存在位置, alias和function也会输出, function输出定义内容; 即可能有多份; 比如type -a ls会输出alias和文件; -f: 不会搜索function类型;其他的都会搜索alias builtin file keyword;

declare

指令格式: declare [-aAfFgiIlnrtux] [-p] [name[=value] ...] 基本介绍: 声明变量并添加属性(类型array,maps;作用域之类); 如果没有name参数, 则输出所有变量的值; -p: 属性和值(一般是变量); 一般只和-f -F使用; 其他属性忽略; 无name则输出所有的变量的属性和值; 属性一般是由其他选项参数提供; -f则限制为函数; -F: 输出函数定义的文件位置; 函数名和属性会输出; 但是一般需要开shopt -s extdebug, 开了之后才会输出源代码位置和行号; -g: 定义全局的变量或修改全局变量; 即使是在函数中调用; -I: 继承外部同名函数属性(nameref属性除外); 如果没有同名, 本地变量; 下面的属性是限制输出变量类型或添加变量属性; 即限制属性或添加属性; -a: 数组类型变量; -A: map类型变量; -f: 函数类型; -i: 可以被当成整形的变量;即由数字组成的变量; 定义则表达式被当成算数表达式解析; -l: 值都被转成小写; 不用于属性; -n: nameref属性; 类似C++ &,别名; declare -n dd=PATH, PATH和dd同名, PATH变dd变, 反之亦然; 不用于数组类型; -r: 变量只读; 不允许被修改或unset; -t: trace属性; 函数则会继承DEBUG,RETURN的trap; 普通变量无意义; -u: 值都被转成大写; 不用于属性; -x: 定义export变量, 作用域为后续执行的指令; -+optioin: +关闭; -打开; +a +A无用, 不会改变数组和map类型; +r也不会删除只读属性; declare声明的变量默认local, -g则是global; name=value则是变量赋值,定义; -a -A或表达式生成的数组,map类型在定义的时候属性不会体现; 比如-r; 只有后续复制修改的时候才会体现; -r属性会在赋值修改的时候触发, 而不是定义; 返回值: 非法选项; -f foo=bar错误定义; 修改只读变量; 错误操作数组; name命名非法; 关闭只读属性; 关闭数组属性; -f输出不存在函数;

标签:

bash查看变量函数定义和值(typedeclare)由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“bash查看变量函数定义和值(typedeclare)