bash在同一行上显示打印

用户1050619

我有一个bash脚本,该脚本调用一个函数来获取包目录。
我正在尝试调试调用的函数(_ros_package_find)并添加一些回显语句。

pkgdir=`_ros_package_find $1`
echo 'debug rosbash first $pkgdir', $pkgdir


function _ros_package_find {
    echo 'debug rospackage find', $1
    local loc
    loc=`export ROS_CACHE_TIMEOUT=-1.0 && rospack find $1 2> /dev/null`
    echo 'loc', $?
    if [[ $? != 0 ]]; then
        return 1
    fi
    echo $loc
    return 0
}

现在,最终显示如下:

debug rosbash first $pkgdir, debug rospackage find, roscpp_tutorials loc, 0 /opt/ros/lunar/share/roscpp_tutorials

不确定为什么在最终echo语句的echo语句中而不是在自己的行中显示“ debug rospackage find”。

亚龙

您的脚本可能会从某些修改中受益(请参见下面的脚本更新版本)。

问:为什么“ debug rospackage find”显示在最终echo语句的echo语句中,而不是在其自己的行中显示。

答:以下行的输出:

echo 'debug rosbash first $pkgdir', $pkgdir

将:

文本“先调试rosbash $ pkgdir”,然后是命令的结果,其中命令$pkgdir_ros_package_find

在下面的示例中,您可以看到tempvar变量保存了运行ls命令的结果,在运行时echo "debug debug", $tempvar-您将获得一行结果:

$ ls
123  234  345
$ tempvar=$(ls)
$ echo "debug debug", $tempvar
debug debug, 123 234 345

当运行echo commands以下两个示例时,您将获得两行输出:

$ echo "debug debug"; echo $tempvar
debug debug
123 234 345

脚本的修改版本:

#!/bin/bash
pkgdir=$(_ros_package_find "$1")
echo "debug rosbash first $pkgdir", "$pkgdir"

function _ros_package_find {
    echo 'debug rospackage find', "$1"
    local loc
    loc=$(export ROS_CACHE_TIMEOUT=-1.0 && rospack find "$1" 2> /dev/null)
    echo 'loc', $?
    if [[ $? != 0 ]]; then
        return 1
    fi
    echo "$loc"
    return 0
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章