是否有一种无管道、简单的衬里来为文件中的每一行执行命令?

是否有一种无管道、简单的衬里来为文件中的每一行执行命令?

例如,

# a demonstration of the functionality
cat dependencies | xargs -n 1 pip install -U  

# expressed as a non-simple, pipeless one liner
awk '{system("pip install -U $0")}' dependencies

似乎应该有一些命令来完成这个只有一个标志的任务,但我不知道它是什么。有这样的事吗?

答案1

为了pip install -U使用每行的内容作为额外参数调用一次,您需要 GNUxargs和:

xargs -rd '\n' -n1 -a dependencies pip install -U

没有-d '\n'它的每一个单词在传递给 的文件中pip install -U,请记住,它xargs会进行自己的报价处理(与任何现代 shell 中的报价处理不同)。

答案2

也许你只是想要:

xargs -n 1 pip install -U < dependencies
# or perhaps more readable:
<dependencies xargs -n 1 pip install -U
# and if you don't want to | bash it:
<dependencies xargs -I% -d" " -n 1 bash -c "pip install -U %"

相关内容