Я действительно озадачен.
Эта команда отлично работает, если я ввожу ее в командной строке в Ubuntu 20.04:
python3 -c 'import hddcoin.util .bech32m as b; print (b.decode_puzzle_hash ("awalletaddress"). hex ()) '
Но если я выполню ту же команду в сценарии bash:
PUZZLEHASH = $ (python3 -c' import hddcoin. util.bech32m as b; print (b.decode_puzzle_hash ("awalletaddress"). hex ()) ')
Я получаю «команда не найдена». Если я изменю «python3» на «venv / bin / python3», это то, что я получаю, когда делаю which python3
, тогда ошибка становится «нет такого файла или каталога». Это заставляет меня думать, что теперь он не находит скрипт python, который я пытаюсь найти с помощью import hddcoin.util.bech32m
part. Но в сценарии bash я записан на компакт-диск в родительский каталог этого сценария python.
Я действительно могу вырезать и вставить команду, как показано в сообщении об ошибке, в приглашение терминала, и он работает нормально.
Я искал все здесь и не могу найти никого, кто задает подобный вопрос. Все поиски «нет такого файла или каталога» завершаются ошибкой при вводе в командной строке терминала. Ни у кого не было проблем с нормальной работой в терминале, но не в сценарии bash, который я могу найти.
Пробовал использовать shebangs #! / Bin / bash и #! / Usr / bin / env bash, ничего не вышло.(Исправлено)
ОБНОВЛЕНИЕ:
Всем спасибо за помощь, я понял, что происходит. Для потомков объясню.
Моя настоящая первоначальная попытка заключалась в следующем:
PUZZLEHASH=$("python3 -c 'import $FORKNAME.util.bech32m as b; print(b.decode_puzzle_hash(\""$WALLETADDRESS:\"). hex())'")
Кажется, это расширилось должным образом со следующим сообщением об ошибке:
/home/qwinn/forktools/forkexplore: line 86: python3 -c 'import hddcoin.util.bech32m as b; print(b.decode_puzzle_hash("awalletaddress"). hex())': command not found
Но когда я заменил переменные литералами и удалил двойные кавычки вокруг всей строки (включая двойные кавычки за python3) все заработало. Итак, мой вопрос заключался в том, как расширить переменные без двойных кавычек вокруг всей строки. Это оказалось непросто (по крайней мере, для меня), но в конце концов я решил это так:
PUZZLEHASHEXEC=$(echo "python3 -c 'import $FORKNAME.util.bech32m as b; print(b.decode_puzzle_hash(\""$WALLETADDRESS"\"). hex())'")
PUZZLEHASH=$(eval $PUZZLEHASHEXEC)
eval был ключом.
В любом случае, спасибо всем, что уделили время попыткам помочь!