【发布时间】:2017-02-13 12:18:58
【问题描述】:
这个问题几乎与this question 重复,但几乎没有,没有一个答案符合我想要达到的目标。
我想做以下事情:有一个文件名列表,使用每个文件名顺序执行一个 python 脚本(!)。现在,我知道我可以轻松地解析我的 python 脚本中的文件名列表并在每一行执行任何函数,但这里的想法是我想将批处理执行的灵活性移到 shell,并保持我的 python 脚本不变。
所以我的参数文件如下所示:
$ cat arglist
1 # <- separated by newlines
2
3
4
python 脚本:
import sys
print("args received:",sys.argv)
我试过了:
$ cat arglist | xargs python ./pyxargs.py -a -b -c
args received: ['./pyxargs.py', '-a', '-b', '-c', '1', '2', '3', '4']
但我想要实现的是以下
args received: ['./pyxargs.py', '-a', '-b', '-c', '1']
args received: ['./pyxargs.py', '-a', '-b', '-c', '2']
args received: ['./pyxargs.py', '-a', '-b', '-c', '3']
args received: ['./pyxargs.py', '-a', '-b', '-c', '4']
我猜 xargs 的工作方式让我很困惑。或者它只是错误的工具,总是组合参数并执行单个执行,而不是单独执行?如果是,xargs 的合适替代方案是什么?
感谢您的帮助
【问题讨论】:
-
只需将
-n 1添加到 xargs 调用中 -
非常感谢,这行得通!