передать аргументы в программу python в оболочке

Я не могу запустить скрипт python внутри сценария оболочки. Ниже приведен файл script.sh, где три аргумента передаются скрипту python.

python main.py 1.0 0.1 10 

Программа python не читает аргументы. Когда такая же строка выполняется в терминале командной строки, она работает нормально.

<< >> Я только что проверил это, main.py аргументы в main.py и выполнив команду без аргументов. Это все еще не работает. main.py использует некоторые другие файлы, которые находятся в одном каталоге. Кроме того, сценарий также находится в том же каталоге.

One Solution collect form web for “передать аргументы в программу python в оболочке”

Из SyntaxError похоже, что вы запускаете скрипт под неправильной версией python, в частности Python 2 вместо Python 3 (поскольку SyntaxError может жаловаться на аннотации, которые существуют только в Python 3 ).

Если вы прочитали ошибку, которую вы действительно получили, вы можете видеть, что это действительно не имеет никакого отношения к передаче аргументов (название вашего вопроса) вообще.

Правильное решение состоит в том, чтобы не вызывать скрипт, префикс его именем интерпретатора, но чтобы вызвать его собственный интерпретатор:

 ./main.py 1.0 0.1 10 

вместо

 python main.py 1.0 0.1 10 

Если это правильно написано, скрипт будет иметь строку shebang в начале, которая указывает, какой интерпретатор ему нужно запустить, и это будет python3 или что-то подобное.

Позволяя сценарию указать свой собственный интерпретатор, вызывающий скрипт не должен знать или заботиться о том, какой интерпретатор требуется. Сценарий можно даже переписать, чтобы использовать другой язык вообще (или его можно заменить на скомпилированный двоичный файл, который вообще не является скриптом), и вызывающим абонентам не нужно изменять их, чтобы называть их по-разному.

  • скрипт bash останавливается при открытии хрома
  • генерирует git commit информацию с резиной (для LaTeX, Debian)
  • Ubuntu MaaS ssl ошибка vmware vcenter 6 соединение
  • Ограничить выполнение пользовательского скрипта
  • * nix, менеджер пакетов которого НЕ разделяет Python на несколько пакетов
  • Archlinux собственно PKGBUILD: исполняемая ошибка Python
  • Как возобновить команду «WATCH» при повторном подключении USB-GPS
  • Как получить имя Диспетчера отображения в Linux?
  • Как изменить версию Python по умолчанию в Debian 7.5?
  • Выполняется отлично через командную строку, не будет работать через systemd ExecStart
  • Могу ли я подключиться к нескольким устройствам Bluetooth с помощью Bluetooth-ключа?
  • Linux и Unix - лучшая ОС в мире.