ESTACK.ECLASS

章节: eclass-manpages (5)
更新时间: 2024年11月
索引 返回主内容

名称

estack.eclass - 类栈值存储支持

描述

支持在类栈变量上存储值。

函数

estack_push <栈> [要压入的项目]
将任意数量的项目压入指定的栈。选择一个有效的变量名(即坚持使用字母数字),并一次将任意数量的项目压入栈。

以下代码片段将依次输出 5、4、3 等。

                estack_push mystack 1 2 3 4 5
                while estack_pop mystack i ; do
                        echo "${i}"
                done
estack_pop <栈> [变量]
从指定的栈中弹出单个项目。如果指定了变量,则弹出的项目将存储在那里。如果没有更多可用项目,则返回 1,否则返回 0。有关更多信息,请参见 estack_push。
evar_push <要保存的变量> [更多要保存的变量]
这允许您临时修改变量,然后恢复它(包括设置与未设置的语义)。目前不支持数组。

这适用于使用 `local` 不起作用的变量(例如导出的变量,或仅在函数中临时更改内容)。

例如

                evar_push LC_ALL
                export LC_ALL=C
                ... do some stuff that needs LC_ALL=C set ...
                evar_pop

                # You can also save/restore more than one var at a time
                evar_push BUTTERFLY IN THE SKY
                ... do stuff with the vars ...
                evar_pop     # This restores just one var, SKY
                ... do more stuff ...
                evar_pop 3   # This pops the remaining 3 vars
evar_push_set <要保存的变量> [要存储的新值]
这是一个保存和临时设置变量的便捷快捷方式。如果未指定值,则该变量将被取消设置。
evar_pop [要恢复的变量数量]
将变量恢复到与相应的 evar_push 调用一起保存的状态。有关更多详细信息,请参阅该函数。
eshopts_push [传递给 `set` 或 `shopt` 的选项]
通常,代码需要启用 shell 选项来更改代码行为。由于更改 shell 选项很容易破坏其他代码段(这些代码段假设默认状态),因此 eshopts_push 用于 (1) 将当前 shell 选项压入栈,以及 (2) 将指定的参数传递给 set。

如果第一个参数是 '-s' 或 '-u',我们假设您希望调用 `shopt` 而不是 `set`,因为某些选项仅通过该方式可用。

一个常见的示例是禁用 shell 通配符扩展,以便可以对自定义函数的变量/参数使用特殊含义/处理。这将是

                eshopts_push -o noglob
                for x in ${foo} ; do
                        if ...some check... ; then
                                eshopts_pop
                                return 0
                        fi
                done
                eshopts_pop
eshopts_pop
将 shell 选项恢复到与相应的 eshopts_push 调用一起保存的状态。有关更多详细信息,请参阅该函数。
eumask_push <新的 umask>
将 umask 设置为指定的新值,同时将先前值保存到栈中。对于临时更改 umask 很有用。
eumask_pop
恢复先前的 umask 状态。

维护者

[email protected]

报告 Bug

请通过 https://bugs.gentoo.org/ 报告 Bug。

文件

estack.eclass

参见

ebuild(5)
https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/estack.eclass


索引

名称
描述
函数
维护者
报告 Bug
文件
参见

本手册由 man2html 使用手册页生成。
时间: 2024年11月12日 格林尼治标准时间03:27:01