我想在一行上显示多个Echos。我的问题是。 -ne不会工作。 我的代码现在是:
echo -ne "Not enough Space! Please free " >&2
echo "scale=2; $((reqSpace - availSpace)) /1024^2" | bc
echo " more GB"
输出是:
Not enough Space available! Please free 5
more GB
当我在第二个通道中放入-ne时,我的输出是:
Not enough Space! Please free (standard_in) 1: syntax error
more GB
如何将所有这些回声放在一条线上?或者我怎样才能解决它? 有什么建议吗?
答案 0 :(得分:2)
你在这里遇到的直接问题是bc
总是将输出作为UNIX文本流发出 - 这意味着最后总是使用换行符分隔符。
使用命令替换来捕获bc
的输出隐式地删除尾随换行符,从而解决此问题。
您的命令替换可以直接替换为echo
命令:
echo "Not enough Space! Please free $(bc <<<"scale=2; $((reqSpace - availSpace)) /1024^2") more GB" >&2
您也可以考虑使用printf
代替:
printf 'Not enough space! Please free %s more GB\n' \
"$(bc <<<"scale=2; $((reqSpace - availSpace)) /1024^2")" >&2
那就是说,你可以从bc
的输出中删除该换行符,就像tr
所做的那样:
printf "Not enough Space! Please free " >&2
echo "scale=2; $((reqSpace - availSpace)) /1024^2" | bc | tr -d '\n' >&2
echo " more GB"