计算IF过程,怎么了?

时间:2018-09-19 03:31:20

标签: bash shell if-statement command

我正在学习重击 我需要计算IF和ELSE上的进程。 但是在节目结束时,这总是显示为零。 但是,如果我正确显示回声。 我怎么了? 谢谢

我的代码

# CHEQUEA SI  EXISTE JSON2.ML - SI NO EXISTE REALIZA EL POST
acount=0
acounte=0
bcount=0
bcounte=0
api=APP_USR-1447105125686073-091812-eeceb6a719ab67de157c32d7c0d6dbc7-335445253




# Borra archivos con errores  
find -type f -name '*.ml' -size 0 | while read f; do rm "${f%.*}."* ; done
find -type f -name '*.ml' -exec grep -c -q '"Validation error","error"' '{}' \; -exec rm '{}' \;
find -type f -name '*.ml' -exec grep -c -q 'invalid_token' '{}' \; -exec rm '{}' \;
find -type f -name '*.ml' -exec grep -c -q 'access_token.invalid' '{}' \; -exec rm '{}' \;
find -type f -name '*.ml' -exec grep -c -q 'body.invalid_field_types' '{}' \; -exec rm '{}' \;
find -type f -name '*.ml' -exec grep -c -q 'item.price.invalid' '{}' \; -exec rm '{}' \;
find -type f -name '*.ml' -exec grep -c -q 'FURY_SAVE_KVSAPI_ERROR' '{}' \; -exec rm '{}' \;


# Busca archivos .ml si no encuentra sube articulo JSON2
find . -type f -name '*.json2' | xargs bash -c 'for fname
do if [ ! -e ${fname}.ml ]
then curl -X POST -H "Content-Type: application/json" -d @${fname} https://web/api > ${fname}.ml 
(( acount++ ))
echo $acount
else
(( acounte++ ))
fi

done

' bash

# Busca archivos .ml si no encuentra sube articulo JSON3
find . -type f -name '*.json3' | xargs bash -c 'for fname
do if [ ! -e ${fname}.ml ]
then curl -X POST -H "Content-Type: application/json" -d @${fname} https://web/api > ${fname}.ml  
(( bcount++ ))
echo $bcount
else
(( bcounte++ ))
fi


done
echo  Total archivos JSON2 no subidos $acounte
echo  Total archivos JSON2 subidos $acount
echo  Total archivos JSON3 no subidos $bcounte
echo  Total archivos JSON3 subidos $bcount
tacounte=$(echo $acounte)
tacount=$(echo $acount)
tbcounte=$(echo $bcounte)
tbcount=$(echo $bcount)
' bash

echo  Total archivos JSON2 no subidos $tacounte
echo  Total archivos JSON2 subidos $tacount
echo  Total archivos JSON3 no subidos $tbcounte
echo  Total archivos JSON3 subidos $tbcount

此节目

回显总归档JSON2无子级$ tacounte 0

回显总归档JSON2 subidos $ tacount 0

回显总归档JSON3无子级$ tbcounte 0

回显总归档JSON3 subidos $ tbcount 0

1 个答案:

答案 0 :(得分:1)

您有两个不同的计数器,它们恰好具有相同的名称。例如,您的父进程中有acount,它最初设置为0,并且从未更改。这就是要打印的内容。然后,每个子进程中都有一个acount,由xargs命令执行。此计数器在每个子进程中分别递增,但从不打印。

您可以将计数器的打印移到子进程中,但是由于您可能有多个子进程(具体取决于所涉及的文件数),因此不能保证您真正看到总数。

对于您而言,xargs不是正确的工具。或者,您可以将find的输出通过管道传递到while read ....循环中。