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

时间:2016-06-01 08:46:24

标签: bash shell unix

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

我的代码。

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

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

enter image description here

我做错了吗?

修改

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

编辑2

在本地机器上尝试vi - 现在情况也更糟。 enter image description here

3 个答案:

答案 0 :(得分:5)

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

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

的编辑器
sed -i "s/$( printf '\015' )//g" yourscript

答案 1 :(得分:0)

它适用于我的系统(OS X),即使每个地方都有双引号。对于我使用的变体:

$> days="$(date +'%Y%m%d_%H%M')"
$> echo $days
20160601_1051
$> echo "SKIP" > ${days}_EMERGENCY.txt
$> ll ${days}_EMERGENCY.txt
-rw-r--r--  1 user  team  5 Jun  1 10:52 20160601_1051_EMERGENCY.txt

答案 2 :(得分:0)

尝试删除第一个变量赋值中的冗余双引号。

$ days=$(date +%Y%m%d_%H%M)
$ echo $days #see what output will get?
$ echo "SKIP" > ${days}_EMERGENCY.txt