我有一个简单的java程序来计算传递给它的参数:
public class SubsetTest {
public static void main(String[] args) {
System.out.println(args.length);
}
}
但是在bash shell中我尝试按如下方式运行程序:
% echo A B C D | java SubsetTest
始终打印0
。我期待4
。我做得不对劲?
答案 0 :(得分:4)
您可以使用xargs
来获得所需的行为
echo A B C D | xargs java SubsetTest
或者您可以尝试使用后退标记
java SubsetTest `echo A B C D`
答案 1 :(得分:0)
pipe将echo
的输出发送到另一个进程'标准输入。
管道是原始软件管道:一组进程 由他们的标准流链接,使每个进程的输出 (stdout)直接作为输入(stdin)提供给下一个
您可以使用
检索它Scanner scanner = new Scanner(System.in);
while (scanner.hasNext())
System.out.println(scanner.next());
至于您要执行的操作,请参阅Redirecting stdout to program argument或Andreas' answer。
答案 2 :(得分:0)
java SubsetTest <<< "A B C D"