Как передать параметры из xargs в скрипт Python? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть command.list файл с параметрами команды для моего скрипта Python my_script.py, который имеет 3 параметра.

Одна строка из которых выглядит следующим образом:

<path1> <path2> -sc 4

Похоже, это не работает, потому что параметры должны быть разделены?

cat command.list | xargs -I {} python3 my_script.py {}

Как разделить строку на параметры и передать ее скрипту Python?

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Документация -I из man xargs

-I replace-str
Заменить вхождения replace-str в исходных аргументах именами, считанными из стандартного ввода.Кроме того, пробелы без кавычек не завершают элементы ввода;вместо этого разделителем является символ новой строки. Подразумевает -x и -L 1.

То, что вы хотите, это

xargs -L1 python3 my_script.py

Кстати: cat ненеобходимо.Используйте одну из следующих команд

< command.list xargs -L1 python3 my_script.py
xargs -a command.list -L1 python3 my_script.py
0 голосов
/ 04 февраля 2019

А как насчет cat command.list | xargs -L 1 python3 my_script.py?Это передаст одну строку (-L 1) за раз вашему скрипту.

0 голосов
/ 04 февраля 2019

Не уверен, что вы пытаетесь сделать с xargs -I {} python3 my_script.py {} там.Но вы ищете,

$ cat file
<path1> <path2> -sc 4
....
<path1n> <path2n> -sc 4

$ while read -r path1 path2 unwanted unwanted; do python3 my_script.py "$path2" ; done<file
...