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转义,会直接输出,这可以避免一些小问题。
浙公网安备 33010602011771号