如何将变量传递给 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')"
我创建了一个变量并将星期、日期和时间存储在其中:
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')"