Я пишу сценарий оболочки в Ubuntu для пи малины 2. Вот мой сценарий.
#!/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
У меня есть немного проблем в этом сценарии:
Как 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
рассматриваться как отдельные объекты, или при отсутствии отдельных слов там).