埃利夫不工作

埃利夫不工作

我正在运行一个包含 automint 解决方案的卡尔达诺节点。我重写了一个脚本并且让它工作了。但脚本的特定部分存在问题。 elif的这一部分应该检查是否有8000000的传入交易,并检查文件夹metadata3-1metadata3中是否有元数据文件。如果 8000000 的事务正常,并且两个文件夹中都有一个文件,则应转到脚本的“then”部分,如果其中一个文件夹中没有文件或事务较高或较低,则应转到脚本的“then”部分“其他”部分。由于某种原因它没有这样做。有人可以帮我吗?

 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 ] ;

可怕的问题。从您的描述中甚至不清楚这是什么类型的问题、语法或意外行为。甚至没有错误消息。

错误的关系运算符

尽管如此,很明显您使用了错误的运算符。

算术表达式(如您的)仅>=允许在中使用,但不允许在 中使用。该命令(只是其别名,不是 shell 语法)具有不同的语法(条件表达式):((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的交易就可以了两个文件夹中都有一个文件,它应该转到“then”部分

所以代码必须是

elif A && B && C

相关内容