elifeが動作しません

elifeが動作しません

私は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

関連情報