我正在尝试创建一个简单的 Linux BASH 脚本,但请注意 bash 正在将 \r 添加到每个字符串,如果我尝试使用 'tr' 删除它,那么它只会添加一个新脚本!这是我的脚本
#!/bin/bash
OUTFILE=$(echo -n `date +"%Y-%m-%d_%H-%m-%S"`)
ASD='DDD'
echo -n "DATE [$OUTFILE]"
echo -n "DDD [$ASD]"
这是输出
bash -x backup-datadir.sh
+++ date +%Y-%m-%d_%H-%m-%S
++ echo -n 2020-03-09_13-03-44
+ OUTFILE=$'2020-03-09_13-03-44\r'
+ ASD=$'DDD\r'
' echo -n 'DATE [2020-03-09_13-03-44
' echo -n 'DDD [DDD-03-44
为什么会出现额外的 \r ?] 消失了,因为它在换行符之后被覆盖。我以前从未见过这个...
\r
您的脚本是一个 DOS 文本文件,这意味着它在每一行的末尾都包含一个回车符(通常写为 )。Unix 文本文件没有这个,当 Unix 系统输出这样一个字符时,它会导致光标位置移动到行首。对该行的进一步输出将覆盖之前在那里输出的内容。将脚本转换为 Unix 文本文件将解决您的问题:
(由于使用,在最后一行输出后没有换行符
echo -n
)。(由于使用,在最后一行输出后没有换行符
echo -n
)。