Bash 解析文件以获取要存储到数组中的特定常量及其整数
我有几个类似这样的异常类(是PHP,但现在不重要): 问题 我需要从所有文件中获取错误代码,将它们存储到一个数组中(索引是错误代码,值是常量名),以便按顺序打印 提示Bash 解析文件以获取要存储到数组中的特定常量及其整数,bash,Bash,我有几个类似这样的异常类(是PHP,但现在不重要): 问题 我需要从所有文件中获取错误代码,将它们存储到一个数组中(索引是错误代码,值是常量名),以便按顺序打印 提示 所有文件都是.php文件 常量错误代码总是类似于const DEFAULT_uu[A-Z_u]_error_code=[0-9]+ 我试图存储在这样的数组中array[159]=“DEFAULT\u FILE\u NOT\u FOUND\u ERROR\u code” 我做了什么 我试着用我的一点Bash脚本知识来做的是一个脚本,
.php
文件const DEFAULT_uu[A-Z_u]_error_code=[0-9]+代码>
array[159]=“DEFAULT\u FILE\u NOT\u FOUND\u ERROR\u code”代码>
DEFAULT\u[…]\ u ERROR\u code=“number”代码>
这是我的脚本。sh正在尝试获取它:
#! /bin/bash
sed -n "s/const \(DEFAULT[A-Z_]*\) = \([0-9]*\);/$array[\2]=\1;/p" $1
如果我这样做:
script.sh
它输出[159]=默认的\u文件\u未找到\u错误\u代码代码>
然后我尝试在其中放入一个变量“array”,如下所示:
eval('$array(`sed -n "s/const \(DEFAULT[A-Z_]*\) = \([0-9]*\);/$array[\2]=\1;/p" $1`)')
还有其他几种组合,但都没有成功
为什么我要在stackOverflow中发布这个
我想知道是否有可能解决它,以及如何解决,或者是否有其他更简单的方法
谢谢删除数组前面的“$”
:
#! /bin/bash
sed -n "s/.*const \(DEFAULT[A-Z_]*\) = \([0-9]*\);.*/array[\2]=\1;/p" $1
现在将输出array[159]=默认\u文件\u未找到\u错误\u代码代码>可用于设置数组元素的值:
eval "$(find yourdir -name '*.php' -exec cat {} + | yourscript)"
(我还在sed表达式中添加了一些*
,这样在php脚本的行中添加$(rm-ri/)
就不会导致您对其进行计算。)在eval
行中的多个撇号(“
)是否会导致问题?内部的重音越重[但是stackoverflow不允许我在不丢失代码格式的情况下放置它。因此我使用了撇号。阅读以了解有关在代码示例中放置文字反勾号(严重重音)字符的更多信息。您也可以将行缩进四个空格,而不是使用反勾号(`)字符。谢谢,我明天(工作时)将尝试使用它。),如果行得通,我会接受你的回答
eval "$(find yourdir -name '*.php' -exec cat {} + | yourscript)"