如何将参数从xargs传递到python脚本?

如何将参数从xargs传递到python脚本?,python,bash,xargs,Python,Bash,Xargs,我有command.list文件,其中包含python脚本my_script.py的命令参数,该脚本有3个参数 其中一行看起来像: -sc 4 看起来它不是这样工作的,因为参数应该被拆分 cat command.list | xargs-I{}python3 my_script.py{} 如何将字符串拆分为pararmeters并将其传递给python脚本?不确定,您正在使用xargs-I{}python3 my_script.py{}执行什么操作。 但是你在找什么 $ cat file <

我有
command.list
文件,其中包含python脚本
my_script.py
的命令参数,该脚本有3个参数

其中一行看起来像:

-sc 4

看起来它不是这样工作的,因为参数应该被拆分

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


如何将字符串拆分为pararmeters并将其传递给python脚本?

不确定,您正在使用
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
$cat文件
-sc 4
....
-sc 4

$while read-r路径1路径2不需要;执行python3 my_script.py“$path2”;完成不确定,您正在尝试使用
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
$cat文件
-sc 4
....
-sc 4

$while read-r路径1路径2不需要;执行python3 my_script.py“$path2”;完成来自
man xargs

-我替换str
用从标准输入读取的名称替换初始参数中出现的Replace str。而且,无引号的空格不终止输入项;分隔符是换行符。表示-x和-L 1

你想要的是

xargs -L1 python3 my_script.py
顺便说一下:
cat
不是必需的。使用以下命令之一

< command.list xargs -L1 python3 my_script.py

来自man xargs的
-I
文档

-我替换str
用从标准输入读取的名称替换初始参数中出现的Replace str。而且,无引号的空格不终止输入项;分隔符是换行符。表示-x和-L 1

你想要的是

xargs -L1 python3 my_script.py
顺便说一下:
cat
不是必需的。使用以下命令之一

< command.list xargs -L1 python3 my_script.py

那cat command.list | xargs-L 1 python3 my_script.py
呢?这将一次向脚本传递一行(
-L 1
)。

关于
cat command.list | xargs-L 1 python3 my_script.py
?这将一次将一行(
-l1
)传递给脚本。

是的,它可以工作:
同时读取-r路径1路径2;python3是否显示\u mouth\u地标.py$path1$path2-sc 4;doneYes,它工作:
读取-r路径1路径2;python3是否显示\u mouth\u地标.py$path1$path2-sc 4;是否需要
-x
选项?@mrglud My bad,不需要
-L
自动启用
-x
。即使没有,你也可能不需要它。如果由于
ARG_MAX
限制,当前线路中的所有选项不能在一次调用中使用,则中止和警告是一种保护措施。例如,在
seq-s''9999999 | xargs-xL1 echo
中,您会收到一条警告,一行中的参数太多,无法容纳单个调用。为什么需要
-x
选项?@mrglud My bad,不需要
-L
自动启用
-x
。即使没有,你也可能不需要它。如果由于
ARG_MAX
限制,当前线路中的所有选项不能在一次调用中使用,则中止和警告是一种保护措施。例如,在
seq-s''999999 | xargs-xL1 echo
中,您会收到一条警告,指出一行中的参数太多,无法装入单个调用。