Corrected rounding error and used mapfile to better handle the results from array

This commit is contained in:
Abu Shifrah 2025-07-05 09:07:22 +03:00
parent bba348c944
commit 559aa39c6d

View File

@ -1,14 +1,14 @@
#!/bin/bash #!/bin/bash
if [ -z $1 ]; if [ -z "$1" ];
then then
echo "You must include the raw transaction hex as an argument."; echo "You must include the raw transaction hex as an argument.";
exit; exit;
fi fi
usedtxid=($(bitcoin-cli decoderawtransaction $1 | jq -r '.vin | .[] | .txid')) mapfile -t usedtxid < <(bitcoin-cli decoderawtransaction "$1" | jq -r '.vin | .[] | .txid')
usedvout=($(bitcoin-cli decoderawtransaction $1 | jq -r '.vin | .[] | .vout')) mapfile -t usedvout < <(bitcoin-cli decoderawtransaction "$1" | jq -r '.vin | .[] | .vout')
btcin=$(for ((i=0; i<${#usedtxid[*]}; i++)); do txid=${usedtxid[i]}; vout=${usedvout[i]}; bitcoin-cli listunspent | jq -r '.[] | select (.txid | contains("'${txid}'")) | select(.vout | contains('$vout')) | .amount'; done | awk '{s+=$1} END {print s}') btcin=$(for ((i=0; i<${#usedtxid[*]}; i++)); do txid=${usedtxid[i]}; vout=${usedvout[i]}; bitcoin-cli listunspent | jq -r '.[] | select (.txid | contains("'"${txid}"'")) | select(.vout | contains('"$vout"')) | .amount'; done | awk '{s+=$1} END {print s}')
btcout=$(bitcoin-cli decoderawtransaction $1 | jq -r '.vout [] | .value' | awk '{s+=$1} END {print s}') btcout=$(bitcoin-cli decoderawtransaction "$1" | jq -r '.vout [] | .value' | awk '{s+=$1} END {print "%.8f\n, s}')
btcout_f=$(awk -v btcout="$btcout" 'BEGIN { printf("%f\n", btcout) }' </dev/null) btcout_f=$(awk -v btcout="$btcout" 'BEGIN { printf("%.8f\n", btcout) }' </dev/null)
echo "$btcin-$btcout_f"| /usr/bin/bc echo "$btcin-$btcout_f"| /usr/bin/bc