簡體   English   中英

Shell腳本分步執行

[英]shell Script is executed in steps

我有這個問題。 我寫了一個非常簡單的腳本,要打開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

但沒有錯誤。

為什么這個腳本不能一次運行,而是一步一步運行?

您是否嘗試過在后台運行它們?

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

因此,您的腳本運行了三個gnome-terminal ,這就是您描述的行為的原因(就像mkdir x; lsls :在mkdir完成后運行)。

如果要在所有終端完成后運行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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM