elife가 작동하지 않아요

elife가 작동하지 않아요

저는 automint 솔루션이 포함된 Cardano 노드를 실행하고 있습니다. 나는 스크립트를 다시 작성하여 작동하게 만들었습니다. 그런데 스크립트의 특정 부분에 문제가 있습니다. elif의 이 부분은 8000000의 들어오는 트랜잭션이 있는지 확인하고 메타데이터3-1metadata3 폴더에 메타데이터 파일이 있는지 확인해야 합니다. 8000000에 대한 거래가 정상이고 두 폴더 모두에 파일이 있는 경우 스크립트의 "then" 부분으로 이동해야 합니다. 폴더 중 하나에 파일이 없거나 거래가 더 높거나 낮으면 다음으로 이동해야 합니다. 스크립트의 "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

관련 정보