Eval in for with two arguments

时间:2017-07-25 10:55:56

标签: eval

我在剧本中写了两个函数

for TYPE in $LIST_TYPE
do
    egrep -v 'dc02|vh|dc03kh00|r0' $REPORT_37 | grep CP_ASK | grep $DC |awk -F, -v type=$TYPE '$NF == type { print $1 }' > ./$DC_'type_'$TYPE
    EMPTY_TYPE_$TYPE=$(cat $DC'_type_'$TYPE | wc -l)
done

第二个将在另一个用于EMPTY_TYPE_ $ TYPE 所以我做了

for TYPE in $LIST_TYPE
do
    eval echo \$EMPTY_TYPE_$TYPE
    egrep -v 'dc02|vh|dc03kh00|r[0-2]' $REPORT_33 | grep NOT | grep $DC |awk -F, -v days=$DAYS -v version=$VERSION -v type=$TYPE '{if (($(NF-15)  > days || $(NF-02)!= version) && ($(NF-20) == type))  print $1}' | eval tail -n \ EMPTY_TYPE_$TYPE > ./$DC'_TO_WORK'
done

问题是我收到错误

awk -F, -v days=180 -v version=6.7 -v type=E '{if (($(NF-15)  > days || $(NF-02)!= version) && ($(NF-20) == type))  print $1}' + eval tail -n '$EMPTY_TYPE_E'

当我只运行命令时(不是在bash脚本中)

egrep -v 'dc02|vh|dc03kh00|r[0-2]' report_33.20170720.075339 | grep NOT | grep $DC |awk -F, -v days=$DAYS -v version=$VERSION  '{if (($(NF-15)  > days || $(NF-02)!= version) && ($(NF-20) == "A"))  print $1}' | eval tail -n \$EMPTY_TYPE_$TYPE

它有效。

1 个答案:

答案 0 :(得分:0)

在第一个函数中 EMPTY_TYPE_ $ TYPE = $(cat $ DC' 类型' $ TYPE | wc -l)应该是 eval EMPTY_TYPE_ $ TYPE = $(cat $ DC' type ' $ TYPE | wc -l)

这就是问题