0

所以,我有一个 IP 数组和一个日期数组......两个数组的长度相同所以,DATE[0] 是分配 IP[0] 的日期......

我正在尝试解析整个月的日志并在到达某个日期时更改 IP ...我知道这是不对的,所以请帮助我的代码:(Grep 语句确实有效,来自其他代码,基本上只需要根据日期检查更改 SEARCHPATH ......)

ARRAY_COUNTER=0

NEW_GREP_TERM=${IPS[0]}

for i in {01..31}
do
SEARCHPATH=${BASEPATH}/${DEF_YEAR}${DEF_MONTH}/SG_22[8-9]${DEF_MONTH}${i}*
zgrep --no-filename $NEW_GREP_TERM $SEARCHPATH | awk -f /usr/local/bin/cvsit.awk >> $OUTFILE 
 if [$i = ${DATES[$ARRAY_COUNTER]}]
        then
        NEW_GREP_TERM = ${IPS[$ARRAY_COUNTER]}
        zgrep --no-filename $NEW_GREP_TERM $SEARCHPATH | awk -f /usr/local/bin/cvsit.awk >> $OUTFILE 
        ARRAY_COUNTER=$ARRAY_COUNTER+1

fi
done
4

1 回答 1

1
  1. 正如乔纳森指出的那样,[and]应该有前导和后置空格。您可以运行which [知道这[实际上是一个命令。if关键字接受布尔语句或变量,是[ foo ]测试foo是真还是假。
  2. 当你想要一个整数范围时0, 1, 2, 3, ..., 31,你可以$(seq 0 31)在 BASH 中使用。编辑:这里的领先0很重要。因此,{...}内置符号更可取。
  3. 最好使缩进一致。它更具人类可读性。
于 2013-06-05T16:13:07.197 回答