一个案例: 我在tsch上编写脚本,在python上调用其他脚本。 当我从cmd调用python脚本时,它没问题。 当我在tsch上调用测试脚本时,我得到错误:参数列表太长
另一个案例:
git grep -e "alex" -- `git ls-files | grep -v 'bin'`
我也收到错误:Argument list too long
。
有什么问题可以解决?
答案 0 :(得分:0)
更新了答案
我不熟悉您正在使用的特定git
命令,您似乎也没有明确地回答评论中的问题。我猜你可能想要这样的东西:
git ls-files | grep -v 'bin' | xargs -L 128 git grep -e "alex" --
原始答案
解决“错误的经典方法:参数列表太长”与xargs
一致。它可用于重复调用您提供其名称的脚本,或者echo
如果您不提供,则使用有限数量的参数,直到参数全部被消耗。
因此,假设您在一个目录中有一百万个文件,那么ls *
将会失败,但是一个简单的ls
将会起作用。因此,我们可以将其用于:
ls | xargs -L 128
将一次重复调用echo
(因为我们没有提供实用程序名称)128个文件名,直到所有文件都被回显。
所以,你可以这样做:
ls | xargs -L 128 yourScript.py
一次以128个文件名重复调用Python脚本。当然,你可能会做一些完全不同的事情并且与这种技术不相容,但到目前为止你的答案并不是很有帮助......
答案 1 :(得分:0)
某人来到这里需要做这样的事情:
./shell_script.sh param1
但是它从Argument list too long
的shell脚本中引发了错误param1
。
我只是碰到了这一点,并通过使用shell变量的一种解决方法对其进行了修复。
# calling the PARAM1 instead of $1 in code of shell_script.sh
export PARAM1=param1 ./shell_script.sh
将字符串传输到nodejs的红宝石版本的示例:
ENV["PARAM1"]="a_bunch_of_test_string_as_longer_as_you_can"
`node node_script.sh`
var param1 = process.env.PARAM1;
console.log(param1);