При вызове /bin/sh
вам нужно передать -c
, если вы хотите, чтобы оболочка запускала команду.Это должно быть эквивалентно:
/bin/sh -c "/usr/sbin/ioreg -c BNBMouseDevice | /usr/bin/grep BatteryPercent"
Вы можете сделать это, заменив
[server setArguments:[NSArray arrayWithObject:@"ioreg -c BNBMouseDevice | grep BatteryPercent"]];
на
[server setArguments:[NSArray arrayWithObjects:@"-c", @"/usr/sbin/ioreg -c BNBMouseDevice | /usr/bin/grep BatteryPercent", nil]];
Обратите внимание, что я сделал два изменения:Аргументы - это массив с двумя элементами, а именно "-c" и "/ usr / sbin / ioreg -c BNBMouseDevice | / usr / bin / grep BatteryPercent", и я также заменил ioreg
на /usr/sbin/ioreg
(и grepс /usr/bin/grep
), чтобы четко указать, что вы заинтересованы в этих конкретных программах.