主脚本在新的终端窗口中执行下标

时间:2019-03-28 13:00:35

标签: bash terminal debian subscript

“ Debian 9 64x-LXDE”

我尝试在bash中创建一个安装脚本。假设我要安装samba。我从主脚本中调用samba \folder\samba.sh的安装脚本。脚本samba.sh应该在新的终端窗口中执行,因此我可以监视安装错误。

脚本应按以下说明工作:

  • 脚本/mainscript.sh仅提供用户信息和交互,并执行多个下标(/folder/subscripts.sh)。
  • 脚本/mainscript.sh需要创建一个新的终端窗口,传递路径和名称subscript.sh并在新的终端窗口中执行它们。
  • 脚本/mainscript.sh一次只能执行一个下标(/folder/subscript.sh)!如果subscript.sh正在运行,则主脚本必须等待,直到新的终端窗口关闭。
  • subscript.sh使用root特权执行一些代码。

问题:

  1. 如何创建新的终端窗口,传递下标并在新的终端窗口中执行?

  2. 如何确保脚本(mainscript.sh)一次仅运行一个下标(subscript.sh)?

示例:

mainscript.sh

    #!/bin/sh
    # This is the content of the mainscript.sh
    # subscript1 and subscript2 must not be executed at the same time!
    # the mainscript needs to wait when a subscript gets executed!

    echo "hello, this script runs in terminal window (((A)))"
    xterm /opt/subscript1.sh
    echo "samba - Installed"
    xterm /opt/subscript2.sh
    echo "samba - removed"

subscript1.sh

    #!bin/sh
    # This is the content of the subscript1

    echo "This script runs in a new terminal window (((B)))"
    apt-get install samba
    # instructions done .... close the terminal window (((B))) now

subscript2.sh

    #!bin/sh
    # This is the content of the subscript2

    echo "This script runs in a new terminal window (((C)))"
    apt-get remove samba
    # instructions done .... close the terminal window (((C))) now

1 个答案:

答案 0 :(得分:0)

在澄清您实际上希望在LXDE中出现一个新的终端窗口之后,这里是一种可能的解决方案。

Debian LXDE可能已安装xterm或lxterminal。下面的示例使用lxterminal。对于xterm,请使用“ xterm -e命令”

首先在其自己的窗口中执行manscript.sh:

$ lxterminal --command=/mainscript.sh
#!/usr/bin/sh

<section that provides user information>

# Call subscripts that will run in sequence
lxterminal --command=/folder/subscripts.sh

subscripts.sh完成后,新的终端窗口将关闭,并将控制权返回给mainscript.sh 通过依次调用它们,一次只能运行一个下标。