Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用星号执行getRuntime().exec?_Java_Shell - Fatal编程技术网

Java 如何使用星号执行getRuntime().exec?

Java 如何使用星号执行getRuntime().exec?,java,shell,Java,Shell,这不管用 Runtime.getRuntime().exec("stat /*"); 也不是这个, Runtime.getRuntime().exec(new String[] {"stat", "/*"}) 有什么办法吗 谢谢,星号由shell扩展(这称为globbing)。因此,您实际上希望执行可执行文件/bin/sh(最有可能的情况是,如果需要,在这里替换另一个shell),并从中调用stat/*。e、 g.执行: /bin/sh -c "stat /*" 从您的Java进程-c指定

这不管用

Runtime.getRuntime().exec("stat /*");
也不是这个,

Runtime.getRuntime().exec(new String[] {"stat", "/*"})
有什么办法吗


谢谢,

星号由shell扩展(这称为globbing)。因此,您实际上希望执行可执行文件
/bin/sh
(最有可能的情况是,如果需要,在这里替换另一个shell),并从中调用
stat/*
。e、 g.执行:

/bin/sh -c "stat /*"
从您的Java进程
-c
指定/bin/sh执行
-c
后面字符串中的任何内容


或者,您可以自己执行
/*
扩展,在Java中查找根目录中的所有文件,然后将这些文件作为参数传递给
stat
,您可以将任务委托给shell,如Brian Agnew所说,或者使用Java在/(例如,通过)中列出所有文件和目录,然后用正确的列表替换
/*

这些答案不起作用,所以我创建了一个shell文件,在其中编写了代码

stat $1*
因此,每当我需要添加星号时,我称这个文件为不带星号的文件

Runtime.getRuntime().exec("/my_shell_file /miki/");
它为我添加星号,并在运行时返回所需的输出:

stat /miki/*

干杯,

我在这里如履薄冰(因此没有答案),但“星号”(glob?)不是外壳的一部分功能(bash、sh、zsh…),因此它不会工作。也许你可以显示更多的错误(如果有的话)?@adamse-是的。请参阅下面的答案注意,您必须将命令作为数组传递才能正常工作:
Runtime.getRuntime().exec(新字符串[]{”/bin/sh“,“-c”,“stat/*”})