比特币:在bashscript中解析json以使用sendmany命令发送BTC时出错

时间:2015-11-06 10:22:51

标签: json bash bitcoin bitcoind

我在我的机器上模拟比特币网络,我已经编写了一个bash脚本来模拟节点之间的事务。当我使用sendmany的{​​{1}}选项发送事务时,我收到bitcoin-cli报告的json解析错误。

代码:

bitcoin-cli

echo json输出:

#!/bin/bash
MAX_NODES=2
MY_PATH=/home/ubuntu/test
CLIENT=/usr/local/bin/bitcoin-cli

declare -a addr

function fcomp() {
        /usr/bin/awk -v n1=$1 -v n2=$2 'BEGIN{ if (n1>n2) exit 0; exit 1}'
}

json="'{"

#get addresses to send
for ((i = 1; i <= MAX_NODES; i++));
do
    addr[$i-1]="$($CLIENT -regtest -rpcport=$((16500 + $i)) -datadir=$MY_PATH/$i/ getnewaddress myaccount)"
    if [ "$i" -lt "$MAX_NODES" ]
    then
        json="$json\"${addr[$i-1]}\":0.00001, "
    else
        json="$json\"${addr[$i-1]}\":0.00001"
    fi
done

json="$json}'"
echo $json

#loop to send money to other nodes
for ((i = 1; i <= MAX_NODES; i++));
do
        balance=`$CLIENT -regtest -rpcport=$((16500 + $i)) -datadir=$MY_PATH/$i/ getbalance`
        if fcomp $balance 0.002; then
                $CLIENT -regtest -rpcport=$((16500 + $i)) -datadir=$MY_PATH/$i sendmany myaccount $json
    fi
done

这给我一个错误:

'{"mj2FrDhEomSzyQtRoGY78oVRPcQs5L5o95":0.00001, "mkxnkT3kx9dsFS8V3qYydpL1o5F5MfwCvM":0.00001}'

我尝试了引号,双引号和转义序列的所有可能组合,但都失败了。如果我将error: Error parsing JSON:'{"mj2FrDhEomSzyQtRoGY78oVRPcQs5L5o95":0.00001, 的输出复制粘贴到手动echo $json命令,则它可以正常工作。

1 个答案:

答案 0 :(得分:1)

好的,所以json没有按照我的预期传递给比特币cli,所以我不得不对我不正确的语法进行3次更改。

json="'{"json="{"json="$json}'""json="$json}"$CLIENT -regtest -rpcport=$((16500 + $i)) -datadir=$MY_PATH/$i sendmany myaccount $json$CLIENT -regtest -rpcport=$((16500 + $i)) -datadir=$MY_PATH/$i sendmany myaccount "$json"