Hi Marc,
That's not what Georg wrote - note the '$' sign.
Anyway, you could probably assign it to a C++ variable and use that, instead of an environment variable.
Cheers, Axel.
Marc Escalier wrote on 03/09/2011 01:51 PM:
> thanks, i try to do an alias within root :
> ==>
>
> gSystem->Setenv("amiGetDatasetEVNTInfo","'python
> /afs/cern.ch/atlas/software/releases/16.6.2/AtlasCore/16.6.2/Database/Bookkeeping/AMIClients/pyAMI/python/amiGetDatasetEVNTInfo.py'");
>
> gSystem->Exec("`amiGetDatasetEVNTInfo`");
>
> gives :
> sh: amiGetDatasetEVNTInfo: command not found
>
> while in unix :
> ccali16% alias amiGetDatasetEVNTInfo='python
> /afs/cern.ch/atlas/software/releases/16.6.2/AtlasCore/16.6.2/Database/Bookkeeping/AMIClients/pyAMI/python/amiGetDatasetEVNTInfo.py'
>
> ccali16% amiGetDatasetEVNTInfo
>
> does something
>
> =============================
> Georg Troska a écrit :
>> Hi,
>>
>> a variable is not an alias.
>> doing in bash
>>
>> # A="xclock"
>> # echo $A
>>
>> will not work either.
>> Probably not the best way, but
>>
>> root[] # gSystem->SetEnv("A","xclock")
>> root[] # gSystem->Exec("`echo $A`")
>>
>> will work.
>> Georg
>>
>>
>>
>>> but the folllowing doesn't "work":
>>>
>>> root [1] gSystem->Setenv("amiGetDatasetEVNTInfo","'python
>>> /afs/cern.ch/atlas/software/releases/16.6.2/AtlasCore/16.6.2/Database/Bookkeeping/AMIClients/pyAMI/python/amiGetDatasetEVNTInfo.py'")
>>>
>>> root [2] gSystem->Exec("amiGetDatasetEVNTInfo")
>>> sh: amiGetDatasetEVNTInfo: command not found
>>>
>>> while in unix :
>>> alias amiGetDatasetEVNTInfo='python
>>> /afs/cern.ch/atlas/software/releases/16.6.2/AtlasCore/16.6.2/Database/Bookkeeping/AMIClients/pyAMI/python/amiGetDatasetEVNTInfo.py
>>>
>>> amiGetDatasetENVInfo
>>> "works"
>>>
>>> would you have a hint ?
>>>
>>> ===============
>>>
>>> Dario Berzano a écrit :
>>>
>>>> Hello,
>>>>
>>>> each gSystem->Exec(), just like the standard C system() function,
>>>> opens a new shell ("man system" says /bin/sh) with a brand new
>>>> environment.
>>>>
>>>> But in ROOT you can set environment variables that are seen by
>>>> subshells launched either via gSystem->Exec() or
>>>> gSystem->OpenPipe()/GetFromPipe(): for instance you can play with
>>>> the following code:
>>>>
>>>> // The environment variable COUNTER is set to 0
>>>> gSystem->Setenv("COUNTER", "0");
>>>>
>>>> // COUNTER is incremented in subshells and its value is set to ROOT's
>>>> // (*not* shell's) environment
>>>> for (Int_t i=0; i<100; i++) {
>>>> gSystem->Setenv("COUNTER", gSystem->GetFromPipe("expr $COUNTER +
>>>> 1"));
>>>> }
>>>>
>>>> // A subshell is spawned to echo the value of envvar COUNTER
>>>> gSystem->Exec("echo Variable COUNTER has value $COUNTER");
>>>>
>>>> Please note that opening/closing 100 subshells just to increment a
>>>> variable's value 100 times isn't very performance-friendly...
>>>>
>>>> Cheers,
>>>> --
>>>> : Dario Berzano
>>>> : INFN & Università - Torino, Italy
>>>> : Wiki: http://newton.ph.unito.it/~berzano
>>>> : GPG: http://newton.ph.unito.it/~berzano/gpg
>>>> : Mobile: +39 348 72 22 520
>>>>
>>>>
>>>> Le 9 mars 2011 à 11:53, Marc Escalier a écrit :
>>>>
>>>>
>>>>
>>>>> Hello,
>>>>>
>>>>> in root, there are the methods TSystem::Exec() and
>>>>> TSystem::GetFromPipe which have the same behaviour for the
>>>>> following issue :
>>>>>
>>>>> if one does in unix :
>>>>> a=3
>>>>> echo $a
>>>>> it works
>>>>>
>>>>> but in root :
>>>>> if ones does :
>>>>> gSystem->Exec("b=3);
>>>>> gSystem->Exec("echo $b")
>>>>> it will "forget" the b
>>>>>
>>>>> only this works :
>>>>> gSystem->Exec("c=3;echo $c")
>>>>>
>>>>> ==>
>>>>> is there a way to have the memory of the variables for several
>>>>> gSystem->Exec() commands ?
>>>>> (in order to do some instructions ones, and some others inside a loop)
>>>>>
>>>>> (i tried also with export, but it doesn't help)
>>>>>
>>>>> thanks
>>>>>
>>>>
>>>>
>>
>>
This archive was generated by hypermail 2.2.0 : Wed Mar 09 2011 - 17:50:01 CET