2016-12-13 41 views
0

我想在一行上顯示多個回波。我的問題是。 -ne將無法工作。 我的代碼是現在:如何在沒有-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 

我怎樣才能把所有這些回聲在一條線上?或者我怎樣才能解決它不同? 有什麼建議嗎?

+1

'回聲-n'是未定義行爲,而'回聲-e'用在需要'echo'打印'輸出-e'的方式定義 - 這是說,你」取決於你的外殼是否違背標準。 –

+1

請參閱[echo的'POSIX規範](http://pubs.opengroup.org/onlinepubs/009695399/utilities/echo.html),特別是APPLICATION USAGE部分。 –

回答

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的輸出中剝離換行符,如所做的那樣:

printf "Not enough Space! Please free " >&2 
echo "scale=2; $((reqSpace - availSpace)) /1024^2" | bc | tr -d '\n' >&2 
echo " more GB" 
+0

echo命令解決了我的問題。萬分感謝 – ChrizZly

相關問題