Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将命令从bash脚本输出到另一个shell(python,root)?_Bash_Root - Fatal编程技术网

如何将命令从bash脚本输出到另一个shell(python,root)?

如何将命令从bash脚本输出到另一个shell(python,root)?,bash,root,Bash,Root,我想打开一个不同于bash脚本的程序外壳(特别是root,一个物理学家的软件),并连续执行几个命令 我知道输入一个命令: echo ".L mymacro.C" | root -l 但是我需要在不关闭root shell的情况下逐个输入多个命令(root不是root用户,而是用于不同程序的交互式shell) 我尝试过使用括号,但没有成功: (echo ".L mymacro.C"; echo "myClass a";echo "a.Loop") | root -l 我需要在根shell中

我想打开一个不同于bash脚本的程序外壳(特别是root,一个物理学家的软件),并连续执行几个命令

我知道输入一个命令:

echo ".L mymacro.C" | root -l  
但是我需要在不关闭root shell的情况下逐个输入多个命令(root不是root用户,而是用于不同程序的交互式shell)

我尝试过使用括号,但没有成功:

(echo ".L mymacro.C"; echo "myClass a";echo "a.Loop") | root -l
我需要在根shell中逐个输入这3个命令:

mymacro.C
myClass a
a.Loop
如何从bash脚本执行此操作

非常感谢。

您能不能简单地做到:

echo -e ".L mymacro.C\nmyClass a\na.Loop" | root -l
这将逐行将数据发送到根shell

或者,如果您真的想一个接一个地执行此操作,则始终可以按如下方式循环:

由于mhawke的评论,代码被删除了

也许a可以工作:

$ root -l <<EOF
.L mymacro.C
myClass a
a.Loop
EOF

$root-l看起来需要用花括号括起来。试着这样做:

cat <<'EOF' | root -l
{
.L mymacro.C
myClass a
a.Loop
}
EOF

cat谢谢你的回答,但不幸的是,这一切对我都不起作用。有效的方法是创建另一个文件
run.cxx

{
gROOT->ProcessLine(".L AnalyseSimple.C");
AnalyseSimple a;
a.Loop();
gROOT->ProcessLine(".q");
}

要将
root-l run.cxx
添加到bash脚本中

肯定比我的答案更好,我喜欢你添加到Wikipedia此处文档页面的链接。@ShellFish:谢谢。我不确定这是否真的正确,因为如果它真的有效,OP括号内的表达式
(echo.L mymacro.C;echo“myClass a”;echo“a.Loop”)| root-L
也应该有效。好的一点,我想我们必须等待OP的回复!尽管根据经验我们知道这可能需要一段时间。请注意,第二个示例可能不起作用,因为
root
在每次迭代中都会启动,并且只处理一个命令。从命令的外观来看,第一个命令加载一个宏,下面的命令可能依赖于此。我会立即更新,谢谢!接受你自己的答案,如果有帮助的话,这样做是可以的,甚至是建议的!