Ubuntu 树莓派 2 中的 Shell 脚本

Ubuntu 树莓派 2 中的 Shell 脚本

我正在 Ubuntu 中为 raspberry pi 2 编写 shell 脚本。这是我的脚本。

#!/bin/sh

source /home/ubuntu/ros_package/devel/setup.bash
roslaunch uvc_camera camera_node.launch &

#Open new tab
WID=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)"| awk '{print $5}')
xdotool windowfocus $WID
xdotool key ctrl+shift+t
wmctrl -i -a $WID

source /home/ubuntu/catkin_ws/devel/setup.bash
rosrun hybrid_tracking ir_track

这个脚本有几个问题:

  1. 它无法识别源命令。
  2. 当我将 & 放在 roslaunch 后面时,它仍然会记录大量输出,并且以下命令无法执行。
  3. 我希望打开一个新选项卡并在另一个选项卡中运行其余脚本,但是却不行。

答案1

正如steeldriver指出的,#!/bin/sh指的是dash壳,和dash 没有源命令。您可以将顶线改为#!/bin/bash致电 ,bash而不是dash

或者,您可以更改source. ,因此行将是. /home/ubuntu/ros_package/devel/setup.bash。但是,您正在尝试获取bash文件。这意味着,那里可能有不可移植的代码行,并且获取该文件可能会失败

因为roslaunch uvc_camera camera_node.launch &您需要将其更改为,roslaunch uvc_camera camera_node.launch 2>&1 > /dev/null &以便不显示该命令的输出。

还要注意,您应该用引号括住您的变量(如"$WID")以防止单词分裂(除非您确实希望$WID将的内容视为单独的项目,或者那里没有单独的单词)。

相关内容