2015-01-08 77 views
0

回聲變量重置光標位置

#!/bin/bash 
HOSTNAME=$(< ds.tmp) 
echo "Hello${HOSTNAME}!" 

TEST="1.2.3.4" 
echo "Hello${TEST}!" 

隨着ds.tmp僅一個IP地址的內容(比如1.2.3.4),其結果是:

!ello1.2.3.4 
Hello1.2.3.4! 

因此,在我打印由$(...)分配的變量後,光標位置將被重置並覆蓋所有文本。

這是爲什麼?我看到處處都找不到任何地方的參考...

回答

2

試試這個:

HOSTNAME=$(tr -d "\r" < ds.tmp) 
+0

這並獲得成功,謝謝! –

3

您的ds.tmp文件有CR-LF作爲其換行符。因此,${HOSTNAME}包含1.2.3.4\r,而不僅僅是1.2.3.4

Unix文本文件應該只使用LF作爲它們的換行符。使用dos2unix來修復它。