如何将变量传递给 mv 命令以重命名带有空格的文件文本和 bash (.sh) 文件中的变量文本

How to pass a variable to the mv command to rename a file text with spaces and the variable's text in a bash (.sh) file

我创建了一个变量并将星期、日期和时间存储在其中:

NOW=$(date "+%a %d/%m/%Y% %H:%M")

那我想把$NOW传递给mv命令来重命名文件。

例如使用标题和当前日期创建名为 a.txt 的文件:

printf "File Report (" > ~/Desktop/a.txt
echo $NOW"):\n" >> ~/Desktop/a.txt  

然后我尝试使用名称中包含的变量($NOW)重命名文件:

mv ~/Desktop/a.txt ~/Desktop/'File Report $NOW'.txt

最后一行应该是什么?我也尝试了这两个选项。

mv ~/Desktop/a.txt ~/Desktop/'File Report' $NOW.txt

&

mv ~/Desktop/a.txt ~/Desktop/'File Report'${NOW}.txt

假设一个合理的Bourne-like shell(例如bash),单引号内不会发生变量替换。您需要使用双引号:

mv ~/Desktop/a.txt "${HOME}/Desktop/File Report ${NOW}.txt"

(我不确定是否需要花括号,但它们不会造成伤害)

您还需要更改日期命令以避免使用斜线。例如:

NOW="$(date '+%a %d-%m-%Y% %H:%M')"