java - 如何从控制台将无限流(bash)转换为java args?
问题描述
考虑以下java程序:
class PrintName{
public static void main(String[] args){
System.out.println("Hi " + args[0]);
}
}
现在我只是从控制台编译并执行它(我在 Ubuntu 服务器上):
~$:javac PrintName.java
~$:java PrintName "Fernando"
我得到下一个输出:
Hi Fernando
我知道 Linux 中有类似“yes”之类的命令,我可以使用这些命令获得无限的数据流。我的想法是做这样的事情:
yes "Fernando" | java PrintName >> my_file.txt
我希望能够将“无限”费尔南多传递给我的程序并让它无限运行多次,然后能够操纵 STDO 重定向到某个文件。
我不知道我是否解释清楚,抱歉我对英语的处理不好。非常感谢您的宝贵时间。
解决方案
这是您想要xargs命令的地方:
yes Fernando | xargs java PrintName
xargs 获取标准输入的每一行,并将其作为命令行参数传递给给定的命令。
要将其重定向到文件,您可以将其包装在分组构造中:
{ yes Fernando | xargs java PrintName; } >> my_file.txt
推荐阅读
- objective-c - PromiseKit 框架 - 对成员“then()”的模糊引用
- java - 没有附加到 jdk 的想法注释
- c# - 域的 Cookie 未用于子域
- outlook - 如何准确查看每个加载项使用了多少内存?
- c# - '指数数组的边界之外。'
- python - 返回得分最高的单词
- flutter - Flutter Build 失败,出现 Geolocation 插件异常
- python - 从音频文件(.MP3 和 .FLAC)中删除单个标签(Python、Mutagen)
- react-native - 在graphql中为参数名称(NOT VALUE OF ARGUMENT)设置$变量
- mysql - 尝试下载 mysql 映像时 Docker pull fs 挂起(见下面的截图)