gpt4 book ai didi

java - Java中执行的Bash命令如果被切断

转载 作者:行者123 更新时间:2023-12-02 04:53:50 26 4
gpt4 key购买 nike

我想执行我编写的bash脚本,但它似乎在执行过程中被切断。

脚本是:

#!/bin/bash
pico2wave -w=tmp/temp.wav "$1"
aplay tmp/temp.wav
rm tmp/temp.wav

Java代码是:

String command = "bash vox '" + text + "'";
System.out.println(command);
Runtime.getRuntime().exec(command);

如果变量text =“Hello World”,程序将打印:

 bash vox 'Hello World'

但是 bash 脚本似乎只执行命令中的第一个单词。

当我在终端中执行该命令时,它按预期工作。

最佳答案

您尝试使用单引号失败。实际上,Java 已经在空格处分割字符串(或者更确切地说, using a StringTokenizer ),而不是 shell,因此引号不起作用。相反,尝试使用

Runtime.getRuntime().exec(new String[] { "bash", "vox", text });

或者更好的是,使用ProcessBuilder

关于java - Java中执行的Bash命令如果被切断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28969962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com