Наличие проблемы с java-кодом, который должен быть выполнен на linux-терминале [закрыт]

Я начинаю писать код Java. У меня возникла проблема с выполнением команды, написанной на Java. Я пытаюсь выполнить команду2. Код ниже

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class OSinventory2 {
    public static void main(String[] args) throws IOException, InterruptedException {

    OSinventory2 obj = new OSinventory2();
    String PATH="/usr/bin:/usr/sbin:/bin:/sbin:/usr/ccs/bin:/usr/local/bin";
    String LD_LIBRARY_PATH="/usr/lib:/usr/ccs/lib:/usr/local/lib";
    String FP="ls -ld ~/mnt/c/Users/aitol/Desktop/Java/TESTING 2> /dev/null";
    String HOSTN="hostname | tr [:upper:] [:lower:]";

    if (obj.executeCommand(FP) != null){
        String command = "mkdir -p /mnt/c/Users/aitol/Desktop/Java/TESTING/Larry";
        System.out.println(obj.executeCommand(command)); 
    }

        String command2 = "touch /mnt/c/Users/aitol/Desktop/Java/TESTING/${`HOSTN`}.txt";
        System.out.println(obj.executeCommand(command2));

    }

private String executeCommand(String command1) {

    StringBuffer output = new StringBuffer();

    Process p;
    try {
        p = Runtime.getRuntime().exec(command1);
        p.waitFor();
        BufferedReader reader =
                new BufferedReader(new InputStreamReader(p.getInputStream()));

        String line = "";
        while ((line = reader.readLine())!= null) {
            output.append(line).append("
");
        }

    } catch (Exception e) {
        e.printStackTrace();
    }

    return output.toString();

} }

И вывод здесь: (щелкните)

Пожалуйста помоги! Спасибо!

java,linux,

-4

Ответов: 1


2 принят

Java не bash; расширение оболочки должно произойти до того, как вы вызовете команду. Простое исправление, которое я вижу, измените это

String command2 = "touch /mnt/c/Users/aitol/Desktop/Java/TESTING/${`HOSTN`}.txt";

к чему-то вроде

String command2 = "touch /mnt/c/Users/aitol/Desktop/Java/TESTING/" + 
        System.getenv("HOSTN") + ".txt";

или , основываясь на ваших комментариях

String command2 = "touch /mnt/c/Users/aitol/Desktop/Java/TESTING/" +
        InetAddress.getLocalHost().getHostName().toLowerCase() +
        ".txt";
Java, Linux,
Похожие вопросы