2015-06-10 4 views
1

Я выполняю команду оболочки в моем коде ROOT с использованием gSystem, который возвращает int, как показано здесь gSystem->Exec(). Но когда я пытаюсь назначить вывод в переменную с кодом, присваивания не происходит.Назначение команды командной строки для переменной в ROOT

int low_edge = 0; 
low_edge = gSystem->Exec("ls ./folder | egrep -o '[0-9]{3,3}' | head -1"); 

Я попытался также gSystem->Exec("ls ./folder | egrep -o '[0-9]{3,3}' | head -1") >> low_edge, но это не сработало.

Я пропустил что-то очевидное?

ответ

0

Возвращаемое значение gSystem-> Exec() равно 0 или -1 в зависимости от того, была ли команда успешной.

Что вы хотите:

TString GetFromPipe(const char* command)

TString the_output=gSystem->GetFromPipe("ls ./folder | egrep -o '[0-9]{3,3}' | head -1"); 

должен работать, вам просто нужно преобразовать TString в целое.

+0

Спасибо, это было решение. Просто добавьте 'AtoI()' из 'TString' для преобразования в integer. –