我的 ubuntu 以奇怪的方式显示 shell 脚本 echo

gam*_*ver 6 command-line sh echo

你好,我有一个包含 shell 脚本的文件,如下所示

#!/bin/bash 
todayDate=$(date)
echo "Today's date is  ${todayDate}. have a nice weekend!"
Run Code Online (Sandbox Code Playgroud)

但是当我在 ubuntu 终端中调用这个文件时,我得到这样的结果

. have a nice weekend!eb 12 22:29:00 CET 2022
Run Code Online (Sandbox Code Playgroud)

为什么不显示

Today's date is Sat Feb 12 22:31:55 CET 2022. have a nice weekend!
Run Code Online (Sandbox Code Playgroud)

?? 下图是 ubuntu 在终端中显示奇怪回声的证据

在此输入图像描述

有人让我上传 ls -alh 的结果。这是结果

total 0
drwx------ 1 username username 512 Feb 12 22:07
drwx------ 1 username username 512 Feb 12 21:57
-rwx------ 1 username username 77  Feb 12 22:41 4Bbash
Run Code Online (Sandbox Code Playgroud)

图片版本: 在此输入图像描述

pLu*_*umo 12

您的文件具有 Windows 行结尾\r\n

  • \r意思是“回车”(回到行首)
  • \n意思是“换行”(转到下一行)。

Unix 仅用作\n行结束符。

因此,您的变量末尾todayDate将包含 a 。\r这会将光标放回到第一个位置,并且后面的文本将覆盖之前的文本。

将文本编辑器设置为使用 Unix 行结尾(换行)或用于dos2unix修复文件。检查这个这个