我的代码
# 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
答案 0 :(得分:1)
您有两个不同的计数器,它们恰好具有相同的名称。例如,您的父进程中有acount
,它最初设置为0,并且从未更改。这就是要打印的内容。然后,每个子进程中都有一个acount
,由xargs命令执行。此计数器在每个子进程中分别递增,但从不打印。
您可以将计数器的打印移到子进程中,但是由于您可能有多个子进程(具体取决于所涉及的文件数),因此不能保证您真正看到总数。
对于您而言,xargs不是正确的工具。或者,您可以将find
的输出通过管道传递到while read ....
循环中。