たとえば、Int_t と TString の2変数をとるマクロがあるとする。
test.C
void test( const Int_t N, const TString str ) { std::cout << "N = " << N << std::endl; std::cout << "str = " << str.Data() << std::endl; }
このマクロを実行するには
root 'test.C(10,"aho")' ### shell 変数を使う場合 N=10; str="aho"; root 'test.C('${N}', "'${str}'")'
のようにシングルクオートでエスケープが必要。
rootの対話型ターミナルでなら
.x test.C(10,"aho")
でも実行できる。
ほか、
test1.sh
#!/bin/bash root << EOF .x test.C(10,"aho"); .q; EOF
とか
test2.sh
#!/bin/bash N=10 str=\"aho\" root << EOF .x test.C(${N},${str}); .q; EOF
などでも実行可能