【发布时间】:2015-03-20 17:52:54
【问题描述】:
我正在使用 bash。我有一个包含 Java 程序命令行参数的文件 F,我需要存储 Java 程序的 both 输出,即标准输出和退出值的输出。存储标准输出通过
cat F | xargs java program > Output
但是 xargs 不能访问 Java 程序的退出代码。 好吧,我拆分它,运行程序两次,一次用于标准输出,一次用于退出代码 --- 但是获取退出代码并正确运行它似乎是不可能的。大家可以试试
java program $(cat F)
但是如果 F 包含例如“”,即程序的一个命令行参数,它是一个空格,则这不起作用。问题在于参数 $(cat F) 的扩展。
现在我没有办法解决这个问题?我不想要“$(cat F)”,因为我希望 $(cat F) 扩展为许多字符串 --- 但我不希望进一步扩展这些字符串。
另一方面,如果有更好的 xargs,可以访问原始退出值,那将解决问题,但我不知道。
【问题讨论】:
-
您需要将状态码和输出放在同一个文件中吗?你怎么知道下一个文件的输出从哪里开始?
-
我只需要将状态码存储在一个变量中(在 bash 脚本中)。
-
文件
F是什么样的?您如何处理其中包含空格的参数?是每行一个参数,还是..?
标签: bash xargs exit-code variable-expansion