私はautomintソリューションを含むCardanoノードを実行しています。私はスクリプトを書き換えて動作させました。しかし、スクリプトの特定の部分に問題があります。 elifのこの部分は、8000000の着信トランザクションがあることを確認し、メタデータ3-1metadata3フォルダにメタデータファイルがあることを確認する必要があります。 8000000の取引が正常で、両方のフォルダにファイルがある場合は、スクリプトの「then」部分に移動する必要があります。フォルダの 1 つにファイルがない場合、または取引が高いか低い場合は、次に進む必要があります。スクリプトの「then」部分「then」部分と「other」部分。何らかの理由でそうしませんでした。誰でも私を助けることができますか?
elif [ ${utxo_balance} == 8000000 ] || [ $(ls "metadata3-1/" | wc -l) >= 1 ] || [ $(ls "metadata3/" | wc -l) >= 1 ] ;
then
###1 NFT version 1+2###
echo "Sending NFT..." >> $log
numberCompleted=$(( numberCompleted+1 ))
POLICYID=$(cardano-cli transaction policyid --script-file $scriptPath)
metadata_file=$(ls metadata3/ | sort -R | tail -1)
metadata_file2=$(ls metadata3-1/ | sort -R | tail -1)
name=$(echo ${metadata_file} | awk '{ print substr( $0, 1, length($0)-5 ) }')
name2=$(echo ${metadata_file2} | awk '{ print substr( $0, 1, length($0)-5 ) }')
head -n -3 ./metadata3/${metadata_file} > ./metadata3/metatemp.json ; mv ./metadata3/metatemp.json ./metadata3/${metadata_file}
tail -n +4 ./metadata3-1/${metadata_file2} > ./metadata3-1/metatemp2.json ; mv ./metadata3-1/metatemp2.json ./metadata3-1/${metadata_file2}
cat ./tempfiles/policy.json ./metadata3/${metadata_file} ./tempfiles/komma.json ./metadata3-1/${metadata_file2} > ./tempfiles/meta.json
amountToSendUser=2200000
amountToDonate=2800000
amountToSendProfit=3000000
currentSlot=$(cardano-cli query tip --mainnet | jq -r '.slot')
cardano-cli transaction build-raw \
--fee 0 \
${tx_in} \
--tx-out ${in_addr}+${amountToSendUser}+"1 $POLICYID.${name}"+"1 $POLICYID.${name2}" \
--tx-out ${profitAddr}+${amountToSendProfit} \
--tx-out ${donationAddr}+${amountToDonate} \
--mint="1 $POLICYID.${name}"+"1 $POLICYID.${name2}" \
--minting-script-file $scriptPath \
--metadata-json-file ./tempfiles/meta.json \
--invalid-hereafter $(( ${currentSlot} + 10000)) \
--out-file tx3.tmp >> $log
fee=$(cardano-cli transaction calculate-min-fee \
--tx-body-file tx3.tmp \
--tx-in-count 1 \
--tx-out-count 3 \
--mainnet \
--witness-count 2 \
--byron-witness-count 0 \
--protocol-params-file protocol3.json | awk '{ print $1 }') >> $log
fee=${fee%" Lovelace"}
amountToSendUser=$((${amountToSendUser} - ${fee}))
cardano-cli transaction build-raw \
--fee ${fee} \
${tx_in} \
--tx-out ${in_addr}+${amountToSendUser}+"1 $POLICYID.${name}"+"1 $POLICYID.${name2}" \
--tx-out ${profitAddr}+${amountToSendProfit} \
--tx-out ${donationAddr}+${amountToDonate} \
--mint="1 $POLICYID.${name}"+"1 $POLICYID.${name2}" \
--minting-script-file $scriptPath \
--metadata-json-file ./tempfiles/meta.json \
--invalid-hereafter $(( ${currentSlot} + 10000)) \
--out-file tx3.raw >> $log
cardano-cli transaction sign \
--signing-key-file $paymentSignKeyPath \
--signing-key-file $policySignKeyPath \
--tx-body-file tx3.raw \
--out-file tx3.signed \
--mainnet >> $log
cardano-cli transaction submit --tx-file tx3.signed --mainnet >> $log
rm ./metadata3/${metadata_file}
rm ./metadata3-1/${metadata_file2}
else
echo ${utxo_balance} >> $log
echo "Refund Initiated..." >> $log
currentSlot=$(cardano-cli query tip --mainnet | jq -r '.slot')
cardano-cli transaction build-raw \
--fee 0 \
${tx_in} \
--tx-out ${in_addr}+${utxo_balance} \
--invalid-hereafter $(( ${currentSlot} + 1000)) \
--out-file tx3.tmp >> $log
fee=$(cardano-cli transaction calculate-min-fee \
--tx-body-file tx3.tmp \
--tx-in-count 1 \
--tx-out-count 1 \
--mainnet \
--witness-count 1 \
--byron-witness-count 0 \
--protocol-params-file protocol3.json | awk '{ print $1 }') >> $log
fee=${fee%" Lovelace"}
amountToSendUser=$(( ${utxo_balance}-${fee} ))
echo ${amountToSendUser} >> $log
cardano-cli transaction build-raw \
--fee ${fee} \
${tx_in} \
--tx-out ${in_addr}+${amountToSendUser} \
--invalid-hereafter $(( ${currentSlot} + 1000)) \
--out-file tx3.raw >> $log
cardano-cli transaction sign \
--signing-key-file $paymentSignKeyPath \
--tx-body-file tx3.raw \
--out-file tx3.signed \
--mainnet >> $log
cardano-cli transaction submit --tx-file tx3.signed --mainnet >> $log
fi
答え1
これ以上投稿する必要はありません
elif [ ${utxo_balance} == 8000000 ] || [ $(ls "metadata3-1/" | wc -l) >= 1 ] || [ $(ls "metadata3/" | wc -l) >= 1 ] ;
ひどい質問です。あなたの説明では、これがどのような問題、構文、または予期しない動作であるかは明らかではありません。エラーメッセージもありません。
誤った関係演算子
それでも間違った演算子を使用していることは明らかです。
あなたのような算術式は>=
でのみ許可されており、許可されません。このコマンド(シェル構文ではなくエイリアス)には、別の構文(条件式)があります。((4>=3))
[ ]
test
[
arg1 OP arg2
OP は、-eq、-ne、-lt、-le、-gt、-ge のいずれかです。
したがって、以下が必要です。
elif [ ${utxo_balance} -eq 8000000 ] || [ $(ls "metadata3-1/" | wc -l) -ge 1 ] || [ $(ls "metadata3/" | wc -l) -ge 1 ] ;
無効な論理演算子
あなたの状態は
elif A || B || C
だから条件Aならまたは条件Bまたは条件Cが真の場合、式全体が真である。
説明に同意しない:
8000000の取引がOKならそして両方のフォルダにファイルがあり、「then」部分に移動する必要があります。
したがって、コードは次のようになります。
elif A && B && C