Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
当我在终端中执行以下命令时,它会按预期执行,即显示当前文件夹内容。
echo <password> | sudo -u root -S ls
但是如果我在我的 java 应用程序中执行相同的命令,它的输出是:
<password> | sudo -u root -S ls
我该如何克服呢?
当您在shell 中执行它时,shell 根据正常的shell 规则拆分命令行,即您得到“echo带参数执行<password>,将结果通过管道传输到sudo...”。
echo
<password>
sudo
Java 不使用 shell,所以你得到“echo带参数执行<password> | sudo -u root -S ls”。