附加日期时复制命令不起作用

时间:2015-08-30 06:33:48

标签: linux bash

我写了一个bash脚本:

date=$( date +%F ) 
cp $1 $1_$date

当以这种方式编写并提供单个参数时,它可以正常工作。但如果我写:

cp $1 $date_$1

我收到错误消息:

  

cp:'1.sh'和'1.sh'是同一个文件

有人可以向我解释,为什么会发生这种情况以及如何解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:3)

问题是_是变量名中完全有效的字符。

像这样改写:

cp $1 ${date}_$1

发生的是$date_(注意尾随_)的值,可能是空的。所以你的命令真的变成了cp $1 $1。通过使用大括号,我们澄清变量的名称是" date"而不是"日期_"。

如果文件名包含空格,您还应引用使用的变量:

cp "$1" "${date}_$1"