Команда Python3 отлично работает в терминале, но не в сценарии bash

Я действительно озадачен.

Эта команда отлично работает, если я ввожу ее в командной строке в 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, ничего не вышло.(Исправлено)

0
задан 1 September 2021 в 17:34

1 ответ

ОБНОВЛЕНИЕ:

Всем спасибо за помощь, я понял, что происходит. Для потомков объясню.

Моя настоящая первоначальная попытка заключалась в следующем:

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 был ключом.

В любом случае, спасибо всем, что уделили время попыткам помочь!

0
ответ дан 4 September 2021 в 09:24

Другие вопросы по тегам:

Похожие вопросы: