将nm函数的内容保存到变量中

时间:2014-03-22 17:26:12

标签: bash

需要将nm函数的内容保存到变量中。 nm应该运行的文件是脚本的参数。 目前我有:

while [ $i -le $#]
do
  eval nm "\$$i"
  i=$(( i+1 ))
done

列出每个文件的nm结果。

但我需要将nm文件的结果保存到变量中。 我试过了

eval CONTENT=$(nm "\$$i")

但这显示错误“nm:'$ 1':没有这样的文件。”

2 个答案:

答案 0 :(得分:1)

@devnull解决了你的问题(在他的评论中),但我建议你按如下方式重写你的循环:

for f
do
  CONTENT=$(nm "$f")
  # ... work with $CONTENT
done
  • 没有for的{​​{1}}循环隐式循环遍历传递给脚本的所有参数。
  • 由于in ...将直接包含每个参数的值,因此无需使用f

(顺便说一下,您的原始代码不会按发布的方式运行,因为eval条件会因2个原因而中断:(a)[ ... ]未初始化且(b)结束{ {1}}之前必须有空格。)

答案 1 :(得分:0)

“eval”是您需要重定向的命令的一部分:

CONTENT=$(eval nm "\$$i")

您必须设置一个数组来存储结果:

CONTENT[$i]=$(eval nm "$\$$i")