【发布时间】:2017-01-31 14:30:23
【问题描述】:
参数文件
在args.txt 上,对于可执行文件的不同调用,有很长的一系列参数。每行都包含可执行文件的单个调用的参数。一行args.txt 看起来像
2 1 -A 7 -B true -C 0.0035 -D /path/to/somewhere ....
以2 1 开头的行,因为要提供给可执行文件的前两个参数是“未命名的”(不带有标志)。
第一次尝试
我第一次尝试
i=5
./myexec `sed "${i}q;d" args.txt`
它大部分时间都有效。但是,对于某些行,参数太长,我收到Error: Command Line Too long,因为我正在超越getconf ARG_MAX。请注意,该软件不允许通过命令行指定参数。
第二次尝试
所以我尝试了
sed "${i}q;d" args.txt | xargs ./myexec
第二次尝试导致可执行文件不返回任何内容。
问题
- 我对@987654329@ 做错了吗?
- 修复第二次尝试后,是否会遇到与第一次尝试相同的问题 (
Command Line Too long)? - 是否存在导致
./myexec将长字符串视为单个参数或类似参数的引用问题? - 您是否建议我尝试另一种方式将参数提供给
myexec?
仅供参考
我在Mac OS X 10.11.3 和Terminal 2.6.1
【问题讨论】:
-
如果太长而无法放入
ARG_MAX,当您使用xargs时它仍然会太长——xargs 只会将其拆分为可执行文件的多个调用,每个调用他们只给出了你想要的参数的一个子集(因此,两者都不正确)。 -
@CharlesDuffy 哦……好的。有没有办法解决这个问题?
-
审核您定义的环境变量集,并取消设置您可以不做的任何事情——它们使用用于命令行参数的相同空间池。还添加了一个答案。
-
...否则,您需要查看您正在运行的命令是否允许配置文件或类似的选项/参数/&c 替代源。待指定。
-
参数列表有多长?
ARG_MAX在 OS X 上是 262K。你在做什么需要比这更多的参数?
标签: bash shell command-line command quotations