2015-02-08 47 views
0

我想寫一個腳本,打開3個終端窗口並在這些窗口中運行幾個語句。但它不起作用。我試過用「& &」運算符,但是我不能使它運行。我也嘗試過在同一行以及下面的語句。我收到的錯誤是cd子進程未能執行,指出沒有這樣的目錄。但是〜/ Projects/catkin_ws目錄是正確的。如何在多個終端中執行多條語句? (Linux,Bash)

#!/bin/bash 
# ROS opstarten 
gnome-terminal -e cd ~/Projects/catkin_ws source devel/setup.bash roscore 

# gazebo opstarten 
gnome-terminal -e cd ~/Projects/catkin_ws 
source devel/setup.bash 
roslaunch cvg_sim_gazebo Qr_Chessboard.launch 

# programma opstarten 
gnome-terminal -e cd ~/Projects/catkin_ws 
source devel/setup.bash 
/usr/bin/python /home/user/Projects/catkin_ws/src/drone7_project/src/drone_program.py 
+0

另外,嘗試在終端中執行cd〜/ Projects/catkin_ws'並檢查它是否正常工作。我希望你假設你的'$ HOME'位置是'〜'。 – 2015-02-08 14:05:16

+1

是的。這些聲明都單獨運作。我剛打開一個終端,輸入前兩個語句。打開第二個終端,另一個終端。這一切都有效。 – Redesign1991 2015-02-08 14:21:50

回答

0

您需要引用語句並在它們之間使用語句分隔符。

gnome-terminal -e 'cd ~/Projects/catkin_ws; source devel/setup.bash; /usr/bin/python /home/user/Projects/catkin_ws/src/drone7_project/src/drone_program.py' 

或者用換行符爲語句分隔

gnome-terminal -e 'cd ~/Projects/catkin_ws 
    source devel/setup.bash 
    /usr/bin/python /home/user/Projects/catkin_ws/src/drone7_project/src/drone_program.py' 

然而,在一個單獨的終端運行這些命令似乎相當誤導。爲什麼不將它們作爲當前終端中的常規後臺作業並輸出到文件?

1

如果你真的想以編程方式在單獨的終端上運行它們,你可以使用終端多路複用器,例如GNU屏幕。

首先,你必須啓動一個會話:

$ screen -S demo 

然後打開你需要在它裏面用Ctrl-A c中的所有終端,並根據需要配置他們的環境,然後就可以發送指令到屏幕的任意頁面使用「-X東西」選項(以字符的東西變成一個虛擬的屏幕終端)(標籤)從你的腳本:

$ screen -S demo -p <page_number> -X stuff 'ls -l 
' 

請注意,您還可以發送換行符真正進入命令。