私はRaspberryPi2用にUbuntuでシェルスクリプトを書いています。これが私のスクリプトです。
#!/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
の内容を個別の項目として扱いたい場合、または個別の単語がない場合を除く)。