迭代数组,使用内容作为文件输出

时间:2014-01-08 20:09:36

标签: linux bash shell unix grep

我遇到了问题,我确信这是一件非常简单的事情,但是,我似乎无法看到它。

所以我试图遍历一个数组,使用每个元素的内容做一些,然后使用该元素作为文件进行重定向。

fullProc=$(grep "WNDP_Server" $1 | grep -v "#" | cut -f 2  | grep -v /nwsys/release/conf/save" | cut -d '/' -f5)
for i in "${fullProc[@]}"
do
   echo "$host$HostName" > "$i"
   grep "WNDP_Server: * " $1 | grep -v "#" | cut -f 2-3 | grep -v "/nwsys/release/conf/save" | grep -w "$i" | cut -f 2 >> "$i"
   grep "WNDP_Port:" $1 | grep -v "#" | grep -w "$i" | cut -f 3 >> "$i"
   ProcName=$(grep "WNDP_Server: * " $1 | grep -v "#" | cut -f 2  | grep -v "/nwsys/release/conf/save" | cut -d '/' -f5 | grep -w "$i" | cut -d '.' -f1)
   echo "Process: $ProcName" >> "$i"
   grep -w "FilterMode:" $1 | grep -v "#" | cut -f 2-3 | grep -w "$i" | cut -f2 >> "$i"
   grep -w "Filter:" $1 | grep -v "#" | cut -f 2-3 | grep -w "$i" | cut -f2 >> "$i"
done

我得到的是一个包含所有正确信息的文件。而不是多个文件,每个文件都有相应的信息。

如果您需要我澄清一下,请告诉我。

$ i是有问题的文件名。

1 个答案:

答案 0 :(得分:1)

您应该像这样分配fullProc

fullProc=($(grep ...))

请注意(...)周围的额外$(grep ...)

否则grep的所有匹配都将在一个字符串中。