如果包含特殊符号,Linux 命令无法使用 java
Posted
技术标签:
【中文标题】如果包含特殊符号,Linux 命令无法使用 java【英文标题】:Linux Command not working using java if it contains special symbol 【发布时间】:2019-12-10 13:04:09 【问题描述】:我正在尝试运行下面的代码,但它不起作用,有人可以帮助我理解为什么它会这样或者我错过了什么吗?
import java.io.IOException;
public class SimpleClass
public static void main(String args[])
try
Process process = Runtime.getRuntime().exec("bash mkdir demoDir");
// Process process2 = Runtime.getRuntime().exec("echo sometext >> someFile.txt");
catch (IOException e)
e.printStackTrace();
如果我执行第一个进程,它工作正常,但如果我执行 process2,它不工作。 someFile.txt 存在并且当前的工作目录,除了这个命令,如果我尝试制作像mkdir /home/dummy/demoDir
这样的目录,那么它也不起作用,但我的程序成功执行。
【问题讨论】:
你认为bash
在第一种方法中的作用是什么?
【参考方案1】:
here 已经讨论过这个问题的答案。使用
String[] cmd = "bash", "-c", "echo sometext >> someFile.txt" ;
Process process2 = Runtime.getRuntime().exec(cmd);
相反。对我有用。
【讨论】:
Thanx Brosch,它起作用了 :) 并且该链接也很有用,我之前搜索过它,但谷歌和 *** 都没有告诉我答案:(【参考方案2】:>>
由您的 shell(例如 bash、zsh 等)解释和处理。但是,您没有在此命令中运行 shell。 Runtime.exec()
基本上执行命令/bin/echo
并将参数someText
、>>
、someFile.txt
传递给它。
我不知道你为什么要做你正在做的事情,但试试这个:
Runtime.getRuntime().exec("bash -c \"echo sometext >> someFile.txt\"");
【讨论】:
嗨,马修,谢谢你的答案,但我之前尝试过,但没有成功,我再次尝试了你的答案,但仍然没有成功【参考方案3】:你不能在没有 shell 的情况下执行 echo 命令 -> 将 bash 添加到开头
【讨论】:
以上是关于如果包含特殊符号,Linux 命令无法使用 java的主要内容,如果未能解决你的问题,请参考以下文章