Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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
Windows bash:在一个脚本文件中,在不同的终端上同时执行多个命令_Windows_Bash_Terminal - Fatal编程技术网

Windows bash:在一个脚本文件中,在不同的终端上同时执行多个命令

Windows bash:在一个脚本文件中,在不同的终端上同时执行多个命令,windows,bash,terminal,Windows,Bash,Terminal,我有一个bash脚本文件,主要用于(交叉)编译多个平台的二进制文件。 我想要的是在不同的终端上同时执行多个命令(所以同时启动)。为了清楚起见,它们必须从相同的(bash).sh文件启动(和关闭) 我尝试过(就像从命令提示符进行测试一样): gnome终端——标题为“终端1”-xbash-c“ssh-troot@192.x.y.z“回声1” 但没有起作用;错误消息:“分析参数失败:无法打开显示:” 当然安装了gnome终端 实际上,(bash)sh文件中我想要的是: (在主终端运行):命令A;命令

我有一个bash脚本文件,主要用于(交叉)编译多个平台的二进制文件。 我想要的是在不同的终端上同时执行多个命令(所以同时启动)。为了清楚起见,它们必须从相同的(bash).sh文件启动(和关闭)

我尝试过(就像从命令提示符进行测试一样): gnome终端——标题为“终端1”-xbash-c“ssh-troot@192.x.y.z“回声1”

但没有起作用;错误消息:“分析参数失败:无法打开显示:” 当然安装了gnome终端

实际上,(bash)sh文件中我想要的是:

(在主终端运行):命令A;命令B;命令C

同时: (在终端2中运行):命令D、命令E;命令F(然后关闭终端)

同时 (在终端3中运行):命令G、命令H;命令I(然后关闭终端)


终端2和3完成并关闭后:执行.sh文件的其余部分

您可以使用后台子shell,然后使用
等待

# A, B, C

(
    # D, E, F
) &

( 
    # G, H, I
) &

wait

注意,这会将所有输出发送到主脚本的
stdout
。如果要单独保存子shell的输出,请分别使用
(stuff)>file.log&
(stuff)| tee file.log&

您的命令没有问题。它之所以说“解析参数失败:无法打开显示:”是因为没有设置显示,所以gnome终端不知道在哪里打开窗口。您可能正在尝试从ssh运行脚本,还是从在X之外启动的GNU屏幕会话运行脚本

如果您是从ssh运行的,那么可以使用
ssh-X
打开您从中进行ssh的客户端上的终端。如果您在屏幕中运行和/或希望在框中的第一个显示上打开gnome终端,请在脚本开始处使用“
export display=:0


如果要在服务器上的另一个显示器上打开它(例如,NX或VNC会话),请在那里手动打开终端,
echo$display
查看它是哪个显示器号,然后在脚本中将display设置为该值

Tnx。我正在ssh终端会话中运行脚本。很抱歉,我不知道如何实现/使用-X,因为gnome终端--title“terminal 1”-X bash-c“ssh-troot@192.x.y.z“echo 1'-X”不起作用,但它将在同一窗口中打开另一个SSH会话。我使用putty通过SSH登录,然后运行shell脚本。您是否在Windows上使用putty登录,并想在putty窗口旁边打开gnome终端?如果是这样的话,你必须运行一个适用于Windows的X服务器,并让Putty转发给它。这里有一个等待。。。我在Windows上使用putty登录到本地服务器,所以所有东西都是本地的(LAN)。为什么我需要X服务器,我想那是为了远程连接我想从一个shell脚本文件(ssh模式)执行它,然后同时在更多的终端中打开和执行,然后关闭那些“额外”终端并返回主终端。因此,没有文件保存等。我只在您希望单独保存这些命令的输出的情况下提出重定向。如果后台子shell不足,并且您出于某种原因确实需要不同的窗口,请参考@thatotherguy的答案。您需要实际的窗口还是进程足够?