Я пытаюсь напечатать серийный номер моего mac [edit: Apple computer] в java-программе. Я знаком с командой Unix
ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}'
который выполняет эту задачу в терминале.
Когда я пытаюсь
String command = "ioreg -l | awk '/IOPlatformSerialNumber/ { print $4; }'"
Runtime terminal = Runtime.getRuntime();
String input = new BufferedReader(
new InputStreamReader(
terminal.exec(commands).getInputStream())).readLine();
System.out.println(new BufferedReader(
new InputStreamReader(
terminal.exec(command, args).getInputStream())).readLine());
мой серийный номер не напечатан. Вместо этого он печатает:
<+-o Root class IORegistryEntry, id 0x100000100, retain 10>
Мне кажется, проблема в том, что terminal.exec()
не предназначен для приема всей командной строки. Есть ли в Java что-то похожее на аргумент shell = True
в Python Popen(command, stdout=PIPE, shell=True)
, который позволит мне передать всю командную строку?