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