Concat变量(日期)和shell unix中的字符串--bash

Tiz*_*ica 1 unix bash shell

我正在尝试连接var(日期)和字符串以使文件具有当前日期名称.

我的代码.

days="$(date +"%Y%m%d_%H%M")"
echo "SKIP" > ${days}_EMERGENCY.txt
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,我得到一个带有文件的文件?在文件名中,如下所示:

在此输入图像描述

难道我做错了什么?

编辑

看着符号,?代表\ r \n - 是不是因为我正在写记事本然后通过ftp上传.sh脚本?

编辑2

在本地机器上尝试使用vi - 现在情况也更糟. 在此输入图像描述

Ste*_*gny 6

我猜你的vi会使整个文件成为DOS风格,因此在echo语句的末尾会有另一个回车符

尝试dos2unix或使用允许您更改行结束样式的编辑器

sed -i "s/$( printf '\015' )//g" yourscript
Run Code Online (Sandbox Code Playgroud)

  • @Dilettant,很好的建议,但“通常”shell 程序员没有分号,脚本中可能有包含不完整(续)语句的行,这些语句也会使 CR 出现问题,通常我认为它甚至以 `interpreter not found 开头` 因为它尝试使用来自 shebang 的 `/bin/bash^M` ...... (2认同)