shell脚本分步执行

时间:2016-12-06 17:03:44

标签: bash shell

我有这个问题。我编写了非常简单的脚本,打开具有特定位置和大小的3个终端,我想在启动后运行它。

脚本:

#!/bin/sh    

wmctrl -s 1 

gnome-terminal --geometry=90x45+960+0 
gnome-terminal --geometry=83x21+0+0 
gnome-terminal --geometry=83x20+0+500 

wmctrl -s 0

当我在终端中运行此脚本时,它运行正常。

我尝试通过“启动应用程序”运行它。 但是当我重新启动PC时,工作空间被切换并打开第一个终端并且脚本停止了。当我关闭终端时,脚本继续打开第二个终端并再次停止。这是所有3个终端。

当我尝试通过crontab执行此操作时也是如此。

我做了

  

2 - ; 〜/ test.txt的

但没有错误。

为什么这个脚本不能一次运行,而是分步运行?

2 个答案:

答案 0 :(得分:0)

您是否尝试在后台运行每个?

gnome-terminal --geometry=90x45+960+0 &
gnome-terminal --geometry=83x21+0+0 &
gnome-terminal --geometry=83x20+0+500 &

答案 1 :(得分:0)

因此,您的脚本会运行三个gnome-terminal,这就是为什么您所描述的行为(mkdir x; lslsmkdir完成后运行的原因)。

如果要在所有终端完成后运行wmctrl -s 0,请使用以下命令:

#!/bin/sh    

wmctrl -s 1 

pids=
for geom in 90x45+960+0 83x21+0+0 83x20+0+500; do
  # run gnome-terminal in background and save its process ID 
  gnome-terminal --geometry="$geom" &
  pids="$pids $!"
done
wait $pids

wmctrl -s 0
相关问题