【问题标题】:finding variable and function memory addresses in shell在 shell 中查找变量和函数内存地址
【发布时间】:2012-09-24 11:19:34
【问题描述】:

在shell编程中,有没有办法找到变量和函数地址? 类似 c 或 c++ 中的东西,当我们输出 &x 时,我们可以得到 x 的内存地址。

【问题讨论】:

  • 你想用那个地址做什么?
  • 其实,我想在运行时估计堆栈大小,有什么办法吗?
  • Shell 脚本一般没有“地址”或“内存”的概念。所以不,你不能得到变量的地址”。
  • 真可惜。谢谢你们的帮助

标签: shell memory memory-address function-address


【解决方案1】:

这取决于你想要什么。大多数 shell 只支持符号(或“软”)引用,即包含其他变量名称的变量。 Korn shell 93 具有名称引用,使用typeset -n 创建,但地址未公开。看看man ksh,可能会有帮助。

但是即使你可以得到变量的内存地址,你会用它做什么呢? Shell 变量不像 C 语言那样以原始方式构造,因此指针算术将毫无用处。您不能仅通过增加地址来遍历数组或字符串。您能做的最好的事情就是调查该特定 shell 的特定版本的内存。

由于 shell 大部分是用 C 编写的,因此您始终可以使用调试 (-g) 编译 shell 源代码并使用调试器进行连接。不知道那会给你带来什么,所以我的问题是:为什么?

编辑;从评论中我看到你想要堆栈大小 - 我很确定 shell 变量将分配在堆上或环境块中。

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2021-06-27
    • 2012-08-13
    相关资源
    最近更新 更多