当我在终端中执行以下命令时,它按预期执行,即显示当前文件夹内容。
echo <password> | sudo -u root -S ls
但是如果我在我的 java 应用程序中执行相同的命令,它的输出是:
<password> | sudo -u root -S ls
我该如何克服这个问题?
最佳答案
当你在 shell 中执行它时,shell 会根据正常的 shell 规则拆分命令行,即你得到“执行 echo
参数 <password>
,将结果通过管道传递给 sudo
...”。
Java 不使用 shell,因此您会得到“使用参数 echo
执行 <password> | sudo -u root -S ls
”。
关于java - 执行 sudo 命令时发现意外输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18146866/