当我在终端中执行以下命令时,它按预期执行,即显示当前文件夹内容。
echo <password> | sudo -u root -S ls
但是如果我在我的java应用程序中执行相同的命令,它的输出是:
<password> | sudo -u root -S ls
我如何克服这个问题?
答案 0 :(得分:2)
当你在shell中执行它时,shell会根据正常的shell规则拆分命令行,即你得到带参数echo
的“<password>
”,将结果传递给sudo
......“。
Java不使用shell,因此您将“使用参数echo
”执行“<password> | sudo -u root -S ls
”。