Seu script pode se beneficiar de algumas modificações (veja abaixo a versão atualizada do script).
P: por que o 'debug rospackage find' é exibido dentro da instrução echo da instrução echo final e não dentro de sua própria linha.
A: A saída da seguinte linha:
echo 'debug rosbash first $pkgdir', $pkgdir
Será:
O texto "debug rosbash first $ pkgdir" seguido pelo resultado do comando em $pkgdir
, que é o comando _ros_package_find
No exemplo abaixo, você pode ver que a variável tempvar
contém o resultado da execução do comando ls
, ao executar echo "debug debug", $tempvar
- você obterá uma linha de resultado:
$ ls
123 234 345
$ tempvar=$(ls)
$ echo "debug debug", $tempvar
debug debug, 123 234 345
Ao executar dois echo commands
, por exemplo abaixo - você terá duas linhas de saída:
$ echo "debug debug"; echo $tempvar
debug debug
123 234 345
Versão modificada do seu script:
#!/bin/bash
pkgdir=$(_ros_package_find "")
echo "debug rosbash first $pkgdir", "$pkgdir"
function _ros_package_find {
echo 'debug rospackage find', ""
local loc
loc=$(export ROS_CACHE_TIMEOUT=-1.0 && rospack find "" 2> /dev/null)
echo 'loc', $?
if [[ $? != 0 ]]; then
return 1
fi
echo "$loc"
return 0
}