如何将流重定向到简单的 Java 应用程序?
How to redirect a stream to simple Java application?
我有一个文件data.txt
。其内容为:
a b c
d e f
我也有Java代码
public class Main {
public static void main(String[] args) {
System.out.println("size: " + args.length);
for (String arg : args) {
System.out.println("arg: " + arg);
}
}
}
还有一个脚本run
:
#!/bin/bash
java -jar test.jar "$@"
我想将文件作为流重定向到我的应用程序。
我尝试了以下方法:
cat data.txt | ./run
哪个给了我:
size: 0
但我想看:
size: 6
a
b
c
d
e
f
我怎样才能做到这一点?
您可以调用 with xargs
将 stdin 的内容与命令行连接起来:
cat data.txt | xargs ./run
根据 $IFS
的值,这可能等同于:
./run a b c d e f
我有一个文件data.txt
。其内容为:
a b c
d e f
我也有Java代码
public class Main {
public static void main(String[] args) {
System.out.println("size: " + args.length);
for (String arg : args) {
System.out.println("arg: " + arg);
}
}
}
还有一个脚本run
:
#!/bin/bash
java -jar test.jar "$@"
我想将文件作为流重定向到我的应用程序。
我尝试了以下方法:
cat data.txt | ./run
哪个给了我:
size: 0
但我想看:
size: 6
a
b
c
d
e
f
我怎样才能做到这一点?
您可以调用 with xargs
将 stdin 的内容与命令行连接起来:
cat data.txt | xargs ./run
根据 $IFS
的值,这可能等同于:
./run a b c d e f