如果我运行此脚本:
#!/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!
因此,在打印由$(...)
指定的变量后,光标位置将被重置并覆盖所有文本。
这是为什么?我到处都看,但在任何地方找不到参考......
答案 0 :(得分:3)
您的ds.tmp
文件的换行符为CR-LF
。因此,${HOSTNAME}
包含1.2.3.4\r
,而不仅仅是1.2.3.4
。
Unix文本文件应该只使用LF
作为换行符。使用dos2unix
进行修复。
答案 1 :(得分:2)
试试这个:
HOSTNAME=$(tr -d "\r" < ds.tmp)