我试图编写一个打开3个终端窗口并在这些窗口中运行几个语句的脚本。但它不起作用。我尝试过使用&&运营商以及" "但是我无法让它发挥作用。我也尝试过同一行以及彼此之下的陈述。我收到的错误是cd子进程无法执行,说明没有这样的目录。但目录〜/ Projects / catkin_ws是正确的。
#!/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 :(得分:1)
如果你真的想以编程方式在不同的终端上运行它们,你可以使用终端多路复用器,例如GNU屏幕。
首先你必须开始一个会议:
$ screen -S demo
然后使用Ctrl-a c打开其中所需的所有终端并根据需要配置其环境,然后您可以使用" -X stuff&#从脚本向任何屏幕页面(选项卡)发送命令34;选项(将字符填充到虚拟屏幕终端):
$ screen -S demo -p <page_number> -X stuff 'ls -l
'
请注意,您还必须发送换行符才能真正输入命令。
答案 1 :(得分:1)
我尝试将主要环境路径添加到bash,然后成功在另一个终端中运行roscore。
#!/bin/bash
# ROS opstarten
PATH=/opt/ros/kinetic/bin
gnome-terminal --tab -e /opt/ros/kinetic/bin/roscore
答案 2 :(得分: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'
但是,在单独的终端中运行这些命令似乎是错误的。为什么不在当前终端中将它们作为常规后台作业运行并输出到文件?