【问题标题】:How do you store a value of grep into an array and then print array?如何将 grep 的值存储到数组中然后打印数组?
【发布时间】:2015-03-26 19:27:35
【问题描述】:
z=0
for i in "${ofield[@]}"; do
  temp=$(grep '#include "' ${cppfield[z]} | sed s/#include// | sed s/\"//g)
  echo "${ofield[$i]} : ${cppfield[$i]} ${temp[@]}" >> Makefile
  echo "    g++ -ansi -Wall -g -c ${cppfield[i]}" >> Makefile
  ((z++))
done

我正在尝试遍历 .cpp 文件数组和 .o 文件数组以打印 .o 数组的每个组件,然后是 .cpp 数组,然后是 .cpp 数组的 grepping 头文件. 我不断收到错误“无效的算术运算符(错误标记为“.0”)

【问题讨论】:

  • temp=$(....) 不创建数组。它创建一个字符串。
  • set -x 添加到脚本的顶部,您将在执行命令时看到它们。
  • 同意 Etan:您似乎尝试创建 .cpp 文件的依赖项列表(包含的头文件)。请按照 Etan 的建议尝试自动依赖,或将您的真正问题/应用程序发布为解决了,而不是要求更正您的解决方案。你可能走错了方向。

标签: arrays bash shell sed grep


【解决方案1】:

第一个:man bash

第二个:i 似乎不是数字,包含目标文件的字符串,因此您不能使用i${cppfield[i]} 中进行索引,使用${i} 本身作为文件名

3rd:temp=$(...) 不创建数组,使用($(...)),注意文件名中的空格,更新IFS=$'\n'

第四个:如果 z 是数字且不是关联数组,则使用索引 z 寻址数组中的元素应该类似于 array[${z}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多