2017-10-07 463 views
0

有一种情况: 我在tsch上写了脚本来调用python上的其他脚本。 当我从cmd调用python脚本时,它是可以的。 当我调用上TSCH测试脚本,然后我得到错误:参数列表过长来自shell脚本的参数列表太长

另一种情况:

git grep -e "alex" -- `git ls-files | grep -v 'bin'` 

我也得到错误:Argument list too long。 有什么问题和如何解决它?

+0

你问“可能是什么问题”?那么,参数列表可能太长了,不是吗?你检查了它的长度吗?每个壳都有限制。 – arkascha

+0

我该如何检查?当我从命令行运行时,我没有问题。 @arkascha – Alex

+0

那么,它是如何被称为?例如,您可以将参数列表重定向到文件中。 – arkascha

回答

0

更新回答

我不熟悉你所使用的特定git命令,好像你不要么理智地回复到注释中的问题。我猜你可能想是这样的,虽然:

git ls-files | grep -v 'bin' | xargs -L 128 git grep -e "alex" -- 

原来的答案

经典的方式来解决“错误:参数列表太长”xargs。它可用于重复调用您提供的名称的脚本,或者如果您没有提供其名称,则使用有限数量的参数,直到参数全部消耗完。

因此,想象一下你的目录中有一百万个文件,那么ls *将会失败,但是一个简单的ls可以工作。因此,我们可以把与使用方法:

ls | xargs -L 128 

将在同一时间拨打echo(因为我们没有提供一个实用程序名)多次与128名,直到所有人都回荡。

所以,你可以这样做:

ls | xargs -L 128 yourScript.py 

在同一时刻多次与128名打电话给你的Python脚本。当然,你可能会做一些完全不同并且与这种技术不相容的东西,但你的答案目前并不是很有用......

+0

我该如何集成'git grep命令'。即:git grep - 'git ls-files' @Mark Setchell – Alex

+0

您需要在原始问题下单击'edit',并显示如何运行该命令,几条示例输出行的样子,以及它们如何需要再处理。 –

+0

对不起,我看不到你实际运行的是什么命令,也不知道它产生了什么样的输出......我猜grep -v bin部分工作正常,所以我们可以跳过这个,所以你运行'git grep -e“亚历克斯“ - git ls-files'?它产生了什么?对不起,我不是'git'的大用户。 –