передать аргументы в программу 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 или что-то подобное.

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

  • Сохранение вывода процесса в файл в файле systemd
  • Как перезапустить скрипт python через одну секунду с помощью UPSTART?
  • Cron Job для продолжения работы Daemon?
  • Все ли процессы Linux записывают EOF в stdout, когда они завершают / заканчивают завершение?
  • python vs bc при оценке 6 ^ 6 ^ 6
  • Программа не может разрешить имя хоста, если она запущена перед первым успешным подключением к Интернету
  • Нужен скрипт для уничтожения процесса python с низким потреблением процессора
  • Вывод журнала из нескольких сценариев
  • Последовательные сообщения DD-wrt
  • Сценарий оболочки декодирования Url
  • прослушивать событие кнопки питания в Python (без ACPI)
  • Linux и Unix - лучшая ОС в мире.