shell内调用其他语言的日志输出不换行问题

最近有个简单的shell脚本,实现调用java程序,并判断执行结果的功能,大体如下:

x=$1
y=$2

ret=$(java -jar myjar.jar $x $y)

echo “ret:”$ret

if [[`echo $ret|grep -e "success"]]
then
echo "success"
exit 0
else
echo "error"
exit -1
fi

很简单不是?java的所有println都是打印到控制台的,日志应当是规整的,例如:

1.我是日志第一行
2.我是日志信息
3.我是日志信息2
4.日志结束了

结果呢,“大便样”,变成了:

ret:1.我是日志第一行 2.我是日志信息 3.我是日志信息2 4.日志结束了
success

这格式会逼疯维护的,所以呢就查了查,结果问题出在 echo 后的格式上,变量要放在“”中,正确代码如下:

echo "ret:${ret}"

当变量在“” 中,变量的内容不会被shell转义,会直接输出,这可以避免一些小问题。

 

posted @ 2018-03-13 22:30  南瓜糊  阅读(809)  评论(0)    收藏  举报