【问题标题】:bash - Shell script opening multiple terminals and executing distinct commands [closed]bash - Shell 脚本打开多个终端并执行不同的命令 [关闭]
【发布时间】:2014-05-04 13:57:19
【问题描述】:

我尝试编写自己的 shell 脚本。到目前为止,我已经成功打开了 4 个 xterminals,由于 'hold' 选项,它们只能执行一个命令。

如果我不使用这个选项,终端就会消失。

这是我的代码:

#!/bin/sh
xterm -title "App 1" -hold -e mycommand | mysecondcommand  &
xterm -title "App 2" -hold -e mycommand | mysecondcommand  &
xterm -title "App 3" -hold -e mycommand | mysecondcommand  &
xterm -title "App 4" -hold -e mycommand | mysecondcommand

不太确定我是否应该以这种方式在同一个终端中执行第二个命令。

有什么想法吗?

谢谢

【问题讨论】:

  • 您尝试运行的命令是什么?您应该能够使用-e "command1; command2; command3 &" 等执行多个命令。也许考虑将这些命令批处理到另一个脚本中并调用它?
  • 首先我需要 cd 到另一个目录然后执行一个程序 但是,主要问题仍然是 -hold 选项:/
  • 如果您尝试:xterm -title "App 1" -e "cd /my/dir && mycommand" 会怎样?
  • @JoshJolly 当我尝试不使用 -hold 时,它会出现半秒钟然后就消失了我也无法在任何地方进行 CD:“没有这样的文件”和 xterm -title“App 1”-e cd /home/
  • /home/ 存在吗?您是否在命令周围加上引号?如果您执行xterm -title "App 1" -e "touch testfile" 之类的操作,是否会创建测试文件?

标签: bash shell unix terminal


【解决方案1】:

没有-hold,xterm 将在命令完成后立即关闭。您可以使用双引号和命令分隔符执行多个命令(例如;&):

xterm -title "App 1" -e "mycommand; mysecondcommand" 

【讨论】:

  • 谢谢,解决了!
  • 你会如何使用gnome-terminal来做到这一点?
  • @gone 您必须将xterm 替换为gnome-terminal 并删除该选项(-title--hold)。有关更多选项,请参阅 gnome-terminal 手册页 (man gnome-terminal)。
最近更新 更多