当我进入echo ${!BASH*}我的shell时,我得到名称以字符串"BASH"开头的所有env变量:
BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV BASH_CMDS BASH_COMMAND BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION
Run Code Online (Sandbox Code Playgroud)
BASH手册页非常谨慎,称为shell参数(间接)扩展.这个信息(这个特定的globbing模式的语法)必须在某个地方,但我找不到它.
我可以匹配变量名末尾的字符串吗?
但主要是
我可以在变量名称的任何位置匹配字符串吗?
哦,什么会令人愉快
我可以在变量名称的任何位置匹配任何内容(*)吗?(基本上列出for循环中的任何变量,BTW这正是我想要做的)
据我所知,没有内置的方法来进行间接名称扩展,并在名称末尾进行匹配.
这是一个命令,您可以使用它来执行您想要的操作:
$ compgen -v | grep -E "HOME$"
Run Code Online (Sandbox Code Playgroud)
这将匹配名称以HOME结尾的每个变量.
通过改变grep部分,您可以匹配变量名称的任何部分.
compgen是一个bash内置,旨在用于完成脚本.compgen -v将列出所有变量名称.compgen -v BASH将列出相同的变量echo ${!BASH*},但每行一个.
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |